¿Cómo lograr el reemplazo automático de lotes con JSL?Esta tabla es generada dinámicamente por el proceso de ejecución JSL. ¿Cómo utilizar la implementación automática JSL para reemplazar el valor 0 a partir de la columna 2 de esta tabla con un valor nulo ""?
Se requiere reemplazar JSL con una lista de números de columna o nombres dinámicos.
Un reemplazo columna por columna o un reemplazo único.

Re: ¿Cómo lograr el reemplazo automático de lotes con JSL?Cargue un archivo de datos, solicite ayuda a los expertos. ¡Muchas gracias!
Re: ¿Cómo lograr el reemplazo automático de lotes con JSL?No tuve cuidado. Utilicé la gramática de VBA directamente y olvidé usar "Empty ()".Re: ¿Cómo lograr el reemplazo automático de lotes con JSL?No sé si esta es la forma más eficiente desde el punto de vista computacional de hacer esto; de hecho, supongo que no lo es. Pero si necesita una solución rápida de fuerza bruta, esto me ha funcionado en el pasado: recorra las columnas, luego recorra las filas buscando el valor que desea reemplazar, estableciendo el nuevo valor a medida que lo encuentre.
dt = current data table();
colnames = dt << Get Column Names(String);
for(c=2,c<=N Items(colnames),c++, // starting at 2 per your note
For Each Row(
If(column(dt,colnames[c])[]==0, // if you find a 0
column(dt,colnames[c])[]=Empty() // make it empty
)
)
);
Re: ¿Cómo lograr el reemplazo automático de lotes con JSL?No puedo probar este script pero debería trabajo.
Names Default to Here( 1 );
// assume that data table is open
dt = Current Data Table();
For( c = 2, c <= N Cols( dt ), c++,
target row = dt << Get Rows Where( Column( dt, c )[] == 0 );
If( N Rows( target row ) > 0,
For( r = 1, r <= N Rows( target row ), r++,
Column( dt, c )[target row[r]] = .;
);
);
);
Re: ¿Cómo lograr el reemplazo automático de lotes con JSL?Agradable, esto reduce el número de filas para recorrer, ahorrando tiempo en tablas grandes. Estaba pensando que podría haber una manera de usar la funcionalidad Recode en la tabla como un todo, pero veo que has ( @markbailey ) ya explicado en otra parte que este es un editor interactivo, no una función JSL.
Re: ¿Cómo lograr el reemplazo automático de lotes con JSL?Tal procesamiento será aún más fácil y rápido en JMP 15. Podrá asignar el valor faltante a todas las filas en una llamada.
Names Default to Here( 1 );
// assume that data table is open
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Wait( 1 );
// create 5 observations of zero
n = N Row( dt );
For( i = 1, i < 6, i++,
r = Random Integer( 1, n );
:weight[r] = 0;
r = Random Integer( 1, n );
:height[r] = 0;
);
Wait( 1 );
For( c = 4, c <= N Cols( dt ), c++,
target row = dt << Get Rows Where( Column( dt, c )[] == 0 );
If( N Rows( target row ) > 0,
Column( dt, c )[target row] = .;
);
);
Re: ¿Cómo lograr el reemplazo automático de lotes con JSL?Tengo muchas ganas de usar JMP 15. ¡Muchas gracias!Re: ¿Cómo lograr el reemplazo automático de lotes con JSL?Tengo muchas ganas de usar JMP 15. ¡Muchas gracias!
For( c = 4, c <= N Cols( dt ), c++,
target row = dt << Get Rows Where( Column( dt, c )[] == 0 );
If( N Rows( target row ) > 0,
Column( dt, c )[target row] = .;
);
);
already works in JMP 14.
Re: ¿Cómo lograr el reemplazo automático de lotes con JSL?¡Muchas gracias!
For( i = 3, i <= N Col( d2 ), i++,
As Column( i )[d2 << get rows where( As Column( i ) == 0 )] = Empty()
);