Ho cercato di eseguire statistiche di base (Mean, StDev, Range) su un insieme di record di 2 milioni di dati. Il problema è che ho bisogno di media due colonne, non solo una. È possibile? Il numero di record per ciascun gruppo varierà. Tabulate farà la media di Val1 e Val2 separatamente, ho bisogno che siano mediati insieme. La tabella dati allegata dovrebbe avere valori medi di Val1 e Val2 in base a ciascun ID.
I risultati dovrebbero essere:
ID UN | Avg 2.000 | DevSt
0,8944 | Gamma
2 |
| B | 3.500 | 1,0488
| 3
|
| C | 2.625 | 1.4079
| 4
|
| D | 2.700 | 1,9465
| 5
|
C'è un codice JSL che posso usare per ottenere i risultati che sto cercando?
Dovrai impilare le colonne. Ecco un semplice script per illustrazione
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 Questo mi fa avere ciò di cui ho bisogno. Purtroppo, il mio laptop non ha le risorse per elaborare i 2 milioni di righe, ma posso ridurlo e arrivare dove devo andare.
Grazie mille!
Ci sono un paio di cose che potrebbero permetterti di correre contro tutte le 2.000.000 di righe.
1. Assicurati che quando impili i dati, impili solo le colonne necessarie. Nell'illustrazione che ho fornito, solo la colonna ID viene trasportata insieme alle colonne di impilamento.
2. Puoi cambiare "Invisibile" in "Privato" nel codice dello stack. Questo renderà una tabella di dati, ma non creerà alcun codice di Windowing, quindi non sarai in grado di vederlo.
3. È possibile comprimere la colonna, (Verifica elenco proprietà colonna) che salverà i dati in uno spazio minore