Come creare un numero in base al gruppo in una colonnaCIAO,
Ho una colonna categorica che ha ripetuto lo stesso ordine di stringhe in modo casuale. Voglio etichettare il numero per ogni gruppo che ha la stessa stringa come nell'esempio in figura. Come posso fare per creare la colonna di risultato?

Automazione e scriptingRi: Come creare un numero in base al gruppo in una colonnache ne dici di usare "ricodifica nuova colonna";

sceneggiatura:
// New data table
// → Data Table( "Untitled" )
New Table( "Untitled" );
// Recode column: result
Local( {dt, col1},
dt = Data Table( "Untitled" );
dt << Begin Data Update;
col1 = dt << New Column( dt:Column 1 );
col1 << Set Name( "result" );
dt << Move Selected Columns( {col1}, after( dt:Column 1 ) );
dt << Recode Column(
dt:Column 1,
{Map Value(
_rcOrig,
{"aaa", "1", "bb", "2", "ccc", "3", "ddd", "4", "eee", "5"},
Unmatched( _rcNow )
)},
Update Properties( 1 ),
Target Column( col1 )
);
dt << End Data Update;
);Ri: Come creare un numero in base al gruppo in una colonnaSto raccogliendo nuovi dati ogni giorno e avrò molte nuove stringhe. Hai bisogno di un modo migliore per farlo rispetto all'hardcoded usando la ricodifica della nuova colonna
Ri: Come creare un numero in base al gruppo in una colonnaA seconda del tipo di colonna che desideri e della quantità di script che sei disposto a fare, ci sono alcune opzioni. Di seguito è riportata un'opzione che potrebbe funzionare
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(9),
Compress File When Saved(1),
New Column("Column 1",
Character,
"Nominal",
Set Values({"aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "cc"})
)
);
dt << New Column("col", Numeric, Ordinal, << Set Each Value(
vals = As Constant(Associative Array(:Column 1 << get values) << get keys);
Contains(vals, :Column 1)
));Ri: Come creare un numero in base al gruppo in una colonnaCIAO,
Ecco un brutto approccio che assegnerà un ID numerico al tuo elenco di ID
Col Rank( :Column1, <<TIE></TIE>
Il problema è che quegli ID univoci non verranno creati con incrementi di 1.
Sto ancora lavorando su un modo migliore, ma questo potrebbe iniziare.
Migliore.
ST
Ri: Come creare un numero in base al gruppo in una colonnaCiao di nuovo,
Ho capito (vedi sotto):
aa = Associative Array( :GROUP );
kk = Associative Array( :GROUP ) << Get Keys;
For( i = 1, i <= N Items( kk ), i++,
aa[kk[i]] = i
);
aa[:GROUP];
Spero che funzioni per la tua applicazione.
Migliore,
ST
Ri: Come creare un numero in base al gruppo in una colonnaecco un altro modo per farlo.
in questo modo crea una tabella di riepilogo e assegna un numero a ciascun valore univoco. per impostazione predefinita questo viene fatto in ordine crescente ma potrebbe essere decrescente o qualsiasi altro ordine desideri.
l'attuale formula di numerazione può anche essere più sofisticata per diverse unità o incrementi a piacere.
tutti i passaggi possono essere eseguiti anche facendo clic sui pulsanti nei menu
facci sapere se funziona.
// create data table to work with
dt1 = New Table( "Untitled", Add Rows( 11 ),
New Column( "Column 1", Character, "Nominal",
Set Values({"aaa", "bb", "ccc", "aaa", "ddd", "eee", "ccc", "bb", "bb", "ccc", "aaa"})
)
);
// start working
// Data table summary
dt2 = dt1 << Summary( Group( :Column 1 ), Freq( "None" ), Weight( "None" ), Link to original data table( 0 ));
// Delete column: N Rows
dt2 << Delete Columns( :N Rows );
// New column: result
dt2 << New Column( "result", Numeric, "Continuous", Format( "Best", 12 ),Formula( Row() ));
// Delete column formula: result
dt2:result << Delete Formula;
// Update data tables
dt1 << Update(
With( Data Table( dt2 ) ),
Match Columns( :Column 1 = :Column 1 ),
Replace Columns in Main Table( None )
);
// Close Data Table: Untitled By (Column 1)
Close( dt2, no save );