He estado intentando ejecutar estadísticas básicas (Mean, StDev, Range) en un conjunto de datos de 2 millones de registros. El problema es que necesito promediar dos columnas, no solo una. es posible? El número de registros para cada grupo variará. Tabular promediará Val1 y Val2 por separado, los necesito promediando juntos. La tabla de datos adjunta debe promediar Val1 y Val2 según cada ID.
Los resultados deben ser:
CARNÉ DE IDENTIDAD UNA | Avg 2.000 | StDev
0.8944 | Distancia
2 |
| segundo | 3.500 | 1.0488
| 3
|
| do | 2.625 | 1.4079
| 4
|
| re | 2.700 | 1.9465
| 5
|
¿Hay algún código JSL que pueda usar para obtener los resultados que estoy buscando?
Tendrá que apilar las columnas. Aquí hay un simple guión para ilustración.
Names default to here(1);
dt=New Table( "JMP QUESTION",
Add Rows( 15 ),
New Column( "ID",
Character( 1 ),
"Nominal",
Set Values(
{"A", "A", "A", "B", "B", "B", "C", "C", "C", "C", "D", "D", "D", "D",
"D"}
),
Set Display Width( 57 )
),
New Column( "Val1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5, 3, 2, 1, 3, 4, 5, 3, 6, 2, 1] ),
Set Display Width( 57 )
),
New Column( "Val2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 3, 2, 4, 3, 2, 1, 2, 5, 3, 1, 2, 5, 1, 1] ),
Set Display Width( 57 )
)
);
// Stack the data
dtStack = dt << Stack(invisible,
columns( :Val1, :Val2 ),
Source Label Column( "Label" ),
Stacked Data Column( "Val 1,2" ),
Name( "Non-stacked columns" )(Keep( :ID ))
);
// Generate the Statistics
dtStack << Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( Mean ), Analysis Columns( :Name( "Val 1,2" ) ) ),
Column Table(
Statistics( Std Dev ),
Analysis Columns( :Name( "Val 1,2" ) )
),
Column Table( Statistics( Range ), Analysis Columns( :Name( "Val 1,2" ) ) ),
Row Table( Grouping Columns( :ID ) )
)
); @txnelson Eso me da lo que necesito. Lamentablemente, mi computadora portátil no tiene los recursos para procesar los 2 millones de filas completas, pero puedo reducir eso y llegar a donde necesito ir.
¡Un millón de gracias!
Hay un par de cosas que podrían permitirte correr contra las 2,000,000 filas.
1. Asegúrese de que cuando esté apilando los datos, solo apile las columnas necesarias. En la ilustración que proporcioné, solo la columna de ID se lleva junto con las columnas de apilamiento.
2. Puede cambiar "Invisible" a "Privado" en el código de pila. Esto creará una tabla de datos, pero no creará ninguno del código de Windowing, por lo que no podrá verlo.
3. Puede Comprimir la columna, (Verificación de la lista de propiedades de la columna) que guardará los datos en menos espacio