C'è un modo efficiente per fare questa aggregazione circolare?Usa il modulo di classe grande:
1. A partire dalla riga 20, estrai un sottoinsieme dei dati da questa riga alle 19 righe precedenti.
2. Classifica questo sottoinsieme in base all'età e riassumi altezza e peso. E uno per uno i risultati di riepilogo della concatenazione.
Grazie!
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
j = 1;
For( j = 20, j <= N Row( dt ), j++,
dt << Select Where( j - 20 < Row() <= j );
d3 = dt << Subset( Output Table( "tab" ), Selected Rows( 1 ), selected columns( 0 ) );
d1 = d3 << Summary(
Sum( height ),
Sum( weight ),
Subgroup( age ),
Freq( 0 ),
Weight( 0 ),
Link to original data table( 0 ),
statistics column name format( "column" )
);
If( j == 20,
d2 = d1;
d2 << setName( "tmp" );
,
Current Data Table( d2 );
d2 << Concatenate( Data Table( d1 ), Append to first table );
Close( d1, nosave );
);
Close( d3, nosave );
);
Automazione e scriptingfinestreRe: C'è un modo efficiente per fare questa aggregazione circolare?Strutturando il tuo JSL nel modo in cui sei, stai sfruttando alcune interessanti funzionalità di JMP.Scrivere JSL per creare l'output desiderato richiederebbe molta codifica.Di seguito, ho apportato alcune piccole modifiche al tuo script che potrebbero darti uno script un po' più efficiente.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
d2 = New Table( "tmp" );
k = 1;
For( k = 20, k <= N Row( dt ), k++,
dt << Select Where( k - 20 < Row() <= k );
d3 = dt << Subset( Output Table( "tab" ), Selected Rows( 1 ), selected columns( 0 ), private );
d1 = d3 << Summary(
Sum( height ),
Sum( weight ),
Subgroup( age ),
Freq( 0 ),
Weight( 0 ),
Link to original data table( 0 ),
statistics column name format( "column" )
);
d2 << Concatenate( Data Table( d1 ), Append to first table );
Close( d1, nosave );
Close( d3, nosave );
);
Ho cambiato il nome della tua variabile indice chiamata "j".Questo per evitare possibili confusioni.JMP ha una funzione chiamata j().È una pratica migliore evitare di avere anche una variabile denominata "j".
Re: C'è un modo efficiente per fare questa aggregazione circolare?Grazie Jim!
Voglio utilizzare JMP per calcolare rapidamente il picco di chip di ciascun titolo in diversi cicli. È troppo computazionalmente intensivo.
Re: C'è un modo efficiente per fare questa aggregazione circolare?ar=[];ar=J(r,c,0);