De hecho, vine a la comunidad para ver si ya había algo nuevo sobre esto, todavía no estoy seguro de si me falta algo ahora incorporado ...
Quiero, usando JSL, reemplazar ciertos valores (como -999 o> 998) con faltantes en muchas columnas (posiblemente todas las columnas numéricas). No es difícil escribir esto. buen ejemplo de lo que quiero decir y lo que estoy haciendo actualmente aquí:
https://community.jmp.com/t5/Discussions/Deleting-cell-values/td-p/46957
Pero (1) esto parece algo que podría ser bastante común, por lo que posiblemente valga la pena su propia función incorporada (o la capacidad de programar la capacidad de recodificación) y (2) no es muy rápido en datos grandes, así que si es posible, tal vez un recurso más Un método subyacente eficiente podría ser parte de tal solución. (?)
En caso de que sea más rápido, el subíndice de la tabla de datos también es una opción:
dt = open("$SAMPLE_DATA/Big Class.jmp");
r = loc(dt[0, 4]==61)
dt[r, 4] = .;Un elemento de la lista de deseos solicitado hace un tiempo era permitir que las propiedades de columna se asignaran a una columna de grupo de tabla definida (una lista de columnas).
Una alternativa que es bastante simple es seleccionar las columnas que necesitan "limpieza". Copie en el portapapeles una propiedad de código de valor faltante, luego envíe el mensaje JSL Pegar propiedades de varias columnas a la tabla de datos. El script adjunto muestra un método de matriz para reemplazar valores sin un bucle for, sin embargo, encuentro que el Código de valores perdidos es más útil: los valores de datos de la base de datos (originales) no se modifican, se puede establecer más de un valor y los valores originales pueden ser recuperado.
Names Default to Here(1);
//create example table
dt = New Table( "example",
Add Rows( 3 ),
New Column( "A",
Character,
"Nominal",
Set Values( {"", "", ""} )
),
New Column( "B",
Character,
"Nominal",
Set Values( {"", "", ""} )
),
New Column( "C",
Character,
"Nominal",
Set Values( {"", "", ""} )
),
New Column( "x_1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 8] )
),
New Column( "x_2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [8, 8, 8] )
),
New Column( "x_3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2, 8, 2] )
),
New Column( "x_4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 8, 5] )
),
New Column( "x_5",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2, 8, 3] )
),
New Column( "x_6",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2, 8, 8] )
),
New Column( "E",
Character,
"Nominal",
Set Values( {"", "", ""} )
)
);
// this replaces values
<STRONG>cnme = dt << get column names(numeric);
dt << select Columns(cnme);</STRONG>
mat = dt << get as matrix;
mat[loc(mat==8)]=empty();
dt[1::nrow(dt),cnme]=mat;
//Close dt and rerun the code to create dt
<STRONG>set clipboard("{Add Column Properties(Set Property(\!"Missing Value Codes\!", {8}))}");
dt << Paste Multi Columns Properties;</STRONG>
//The value of 8 appears, but is treated as missing.
//There is a request that column property settings can be assigned to a column group