¿Cómo hacer una secuencia numérica a valores únicos?Tengo la siguiente Columna 1 y necesito crear una nueva columna que contenga el número secuencial de repeticiones en la Columna 1
La tabla resultante debería verse así:
| columna1 | columna2 |
| a | 1 |
| a | 2 |
| a | 3 |
| b | 1 |
| b | 2 |
| C | 1 |
¿Alguna sugerencia sobre cómo codificar en JSL? (¿o en fórmula de columna?) ¡gracias!
Re: ¿Cómo hacer una secuencia de números a valores únicos?Aquí hay un método de fórmula de columna:
// define values
Col1Vals = {"a","a","a","a","b","b","c","c","c"};
dt = New Table();
dt << New Column("MyValues",Character,Nominal,<< Set Values(Col1Vals));
// Create Cumulative Frequencies
dt << New Column("CumulativeFreqCount",Numeric,Continuous);
dt:CumulativeFreqCount << Set Each Value(
If(
Row() == 1, 1,
:MyValues == Lag( :MyValues, 1 ), Lag(:CumulativeFreqCount, 1 ) + 1,
1
)); // end set each valueRe: ¿Cómo hacer una secuencia de números a valores únicos?En realidad, me perdí la parte en la que quería obtener una suma acumulativa, en lugar de solo la suma.
Estoy bastante seguro de que hay formas más inteligentes y eficientes de hacer esto. Sin embargo, esto funcionará.
Esencialmente, también estoy creando los datos sin procesar, para que los pruebes y juegues con ellos.
// define values
Col1Vals = {"a","a","a","a","b","b","c","c","c"};
dt = New Table();
dt << New Column("MyValues",Character,Nominal,<< Set Values(Col1Vals));
// Generate summary
dt1 = dt << Summary( Group( :MyValues ), Freq( "None" ), Weight( "None" ) );
UniqueItems = dt1:MyValues << Get values;
FrequencyOfItems = dt1 << Get As Matrix; <BR /><BR />Close(dt1,"No Save");
// Add Cumulative Frequencies back
dt << New Column("CumulativeFreqCount",Numeric,Continuous);
for(i = 1, i <= N Items(UniqueItems),i++,
Rows = dt << Select Where(:MyValues == UniqueItems[i]) << Get Selected Rows;
ValsToAppend = Transpose(Index(1,FrequencyOfItems[i]));
dt[Rows,"CumulativeFreqCount"] = ValsToAppend;
dt << Clear Select;
); 
Re: ¿Cómo hacer una secuencia de números a valores únicos?gracias.Puse el código en un archivo de secuencia de comandos JMP (ver archivo adjunto), pero la secuencia de comandos no se ejecuta.¿Alguna sugerencia?
¿Sería más fácil poner el código en una fórmula de columna?
Re: ¿Cómo hacer una secuencia de números a valores únicos?@rs ,
Suponiendo que tiene una referencia a la tabla de datos, digamos dt:
dt1 = dt << Summary(
Group( :Column 1 ),
Freq( "None" ),
Weight( "None" )
)
Si los datos no están ordenados (por lo general, debería), entonces puede usar sort() en la tabla resultante