Cómo crear un número basado en el grupo en una columnaHola,
Tengo una columna categórica que ha repetido el mismo orden de cadena al azar. Quiero etiquetar el número de cada grupo que tiene la misma cadena como el ejemplo en la imagen. ¿Cómo puedo hacer para crear la columna de resultado?

Automatización y secuencias de comandosRe: Cómo crear un número basado en un grupo en una columnaqué tal usar "recodificar nueva columna";

guion:
// 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;
);Re: Cómo crear un número basado en un grupo en una columnaEstoy recopilando nuevos datos diariamente y tendré muchas cadenas nuevas. Necesita una mejor manera de hacerlo que codificar usando recodificar nueva columna
Re: Cómo crear un número basado en un grupo en una columnaSegún el tipo de columna que desee y la cantidad de secuencias de comandos que esté dispuesto a realizar, existen bastantes opciones. A continuación se muestra una opción que podría funcionar
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)
));Re: Cómo crear un número basado en un grupo en una columnaHola,
Aquí hay un enfoque feo que asignará una identificación numérica a su lista de identificaciones
Col Rank( :Column1, <<TIE></TIE>
El problema es que esas ID únicas no se crearán en incrementos de 1.
Todavía estoy trabajando en una mejor manera, pero esto podría comenzar.
Mejor.
TS
Re: Cómo crear un número basado en un grupo en una columnaHola de nuevo,
Lo tengo (ver más abajo):
aa = Associative Array( :GROUP );
kk = Associative Array( :GROUP ) << Get Keys;
For( i = 1, i <= N Items( kk ), i++,
aa[kk[i]] = i
);
aa[:GROUP];
Espero que funcione para su aplicación.
Mejor,
TS
Re: Cómo crear un número basado en un grupo en una columnaaquí hay otra forma de hacerlo.
de esta manera crea un resumen de tabla y le da un número a cada valor único. por defecto esto se hace en orden ascendente pero podría ser descendente o en cualquier otro orden que desee.
la fórmula actual de numeración también puede ser más sofisticada para diferentes unidades o incrementos según se desee.
todos los pasos también se pueden realizar haciendo clic en los botones de los menús
Permítanos saber si funciona.
// 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 );