¿Cómo completar la concatenación de la tabla de bucle en la matriz de memoria y luego generar la tabla de datos una vez?Yo uso "Big Class.jmp" para explicar los requisitos de operación:
Estoy siguiendo el código para completar, pero la velocidad es lenta.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "test", formula( :weight - :height ) );
dt << run formulas;
Wait( 0 );
For( i = 1, i <= N Row( dt ), i++,
d1 = New Table( "a",
Add Rows( dt[i, 6] + 1 ),
New Column( "name", Character, Nominal ),
New Column( "step", Continuous ),
New Column( "level", Continuous )
);
d1[1 :: N Row( d1 ), 1] = dt[i, 1];
Column( "step" ) << Formula( dt[i, 4] + (Row() - 1) );
d1 << run formulas;
Column( "step" ) << deleteFormula;
Column( "level" ) << Formula( If( Row() == dt[i, 6] + 1, 10, Ceiling( (Row()) / ((dt[i, 6] + 1) / 9.9) ) ) );
d1 << run formulas;
Column( "level" ) << deleteFormula;
If( i == 1,
d2 = Current Data Table(),
Current Data Table( dt );
d2 << Concatenate( Data Table( d1 ), Append to first table );
d1 << Close Window;
);
);
1) Cree una nueva columna "prueba" para calcular el "peso" - "altura"
2) Genere la nueva tabla de acuerdo con los siguientes requisitos y empalme en la primera tabla nueva generada:
Cada nuevo formulario tiene tres columnas: "nombre", "paso" y "nivel". El número de filas en la nueva tabla es el valor de "prueba" de cada nombre obtenido en el primer paso
La columna "paso" son los datos que comienzan con "altura", aumentando en 1 por cada fila hacia abajo y hasta la fila "peso"
Columna "nivel": divida estas filas uniformemente en 10 segmentos de pequeño a grande. El número de líneas por párrafo puede variar.
3) Empalme la mesa una por una en una mesa.

¿Cómo completar la concatenación de la tabla de bucle en la matriz de memoria y luego generar la tabla de datos una vez?
Gracias expertos!
Re: ¿Cómo completar la concatenación de la tabla de bucle en la matriz de memoria y luego generar la tabla de datos una vez?En lugar de tener que modificar su código a pasos que solo usan matrices y variables de memoria, mi modificación a continuación, aprovecha la opción "Privada" para las Tablas de datos. Le permite a uno crear tablas de datos que no se pueden mostrar. Por lo tanto, eliminando todos los gastos generales de la creación de los objetos necesarios para mostrarlos. Mi código redujo el tiempo de procesamiento al menos a la mitad.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "test", formula( :weight - :height ) );
dt << run formulas;
Wait( 0 );
For( i = 1, i <= N Row( dt ), i++,
d1 = New Table( "a",
private,
Add Rows( dt[i, 6] + 1 ),
New Column( "name", Character, Nominal ),
New Column( "step", Continuous ),
New Column( "level", Continuous )
);
d1[1 :: N Row( d1 ), 1] = dt[i, 1];
Column( "step" ) << Formula( dt[i, 4] + (Row() - 1) );
d1 << run formulas;
Column( "step" ) << deleteFormula;
Column( "level" ) << Formula(
If( Row() == dt[i, 6] + 1,
10,
Ceiling( (Row()) / ((dt[i, 6] + 1) / 9.9) )
)
);
d1 << run formulas;
Column( "level" ) << deleteFormula;
If( i == 1,
d2 = d1,
Current Data Table( dt );
d2 << Concatenate( Data Table( d1 ), Append to first table );
Close(d1, nosave);
);
);
dtFinal = d2 << subset( selected rows( 0 ), selected columns( 0 ) );<BR />Close(d2,nosave);
Consulte la Guía de secuencias de comandos para obtener información sobre la opción Privada.
Re: ¿Cómo completar la concatenación de la tabla de bucle en la matriz de memoria y luego generar la tabla de datos una vez?privado,
Gracias Jim!