¿Hay una manera eficiente de hacer esta agregación circular?Utilice la forma de clase grande:
1. A partir de la línea 20, extraiga un subconjunto de los datos de esta fila a las 19 filas anteriores.
2. Clasifique este subconjunto según la edad y resuma la altura y el peso. Y resuma los resultados de la concatenación uno por uno.
¡Gracias!
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 );
);
Automatización y secuencias de comandosventanasRe: ¿Hay alguna manera eficiente de hacer esta agregación circular?Al estructurar su JSL de la forma en que lo hace, está aprovechando algunas características interesantes de JMP.Escribir JSL para crear el resultado deseado requeriría mucha codificación.A continuación, he realizado algunos ajustes menores a su secuencia de comandos que podrían brindarle una secuencia de comandos un poco más eficiente.
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 );
);
Cambié el nombre de su variable de índice llamada "j".Esto es para evitar posibles confusiones.JMP tiene una función llamada j().Es una mejor práctica evitar tener también una variable llamada "j".
Re: ¿Hay alguna manera eficiente de hacer esta agregación circular?¡Gracias Jim!
Quiero usar JMP para calcular rápidamente el pico de chips de cada acción en diferentes ciclos. Es demasiado computacionalmente intensivo.
Re: ¿Hay alguna manera eficiente de hacer esta agregación circular?ar=[];ar=J(r,c,0);