Implementación de JSL para eliminar columnas con todos los valores faltantes por la misma categoríaEn el archivo adjunto, el campo "Tienda" se divide en dos tiendas, A y B. Si faltan valores en todas las celdas de la columna correspondiente a la misma tienda, elimine toda la columna, como se muestra en el "Resultado esperado" adjunto. ¿Cómo se puede implementar esto con JSL?
Puedo contar los valores faltantes en cada columna, pero no encuentro la manera de verificar si todas las celdas correspondientes al mismo almacén tienen valores faltantes. ¿Tienes algún método eficaz? Dado que hay muchas columnas (decenas de miles), usar un método de cálculo lento sería demasiado largo.
Automatización y scriptingRe: Implementación de JSL para eliminar columnas con todos los valores faltantes de la misma categoría¿Por qué se conservan los precios del plátano y del durián? Faltan los precios del plátano "A" y del durián "B".
Re: Implementación de JSL para eliminar columnas con todos los valores faltantes de la misma categoríaHola,
Siguiendo tu regla al pie de la letra, diseñé una opción sin script. Sin embargo, como señaló @mmarchandFSLR , el resultado no coincidiría con tus "Resultados" porque el plátano y el durián quedarían excluidos o eliminados.
1) Apila todas tus columnas (ver ejemplo adjunto)
2) Utilice la fórmula:
Col Sum( Is Missing( :Data ), :Store, :Label ) / Col Sum( 1, :Store, :Label )
3) Agregue una columna de verificación maestra "FILAS A ELIMINAR" con la fórmula:
Col Max( :MISSING by STORE PCT, :Label )
4) Eliminar las filas marcadas
5) Divida la tabla resultante por "Etiqueta".
Mejor,
TS
Re: Implementación de JSL para eliminar columnas con todos los valores faltantes de la misma categoríaTe sugiero que crees una tabla que se parezca a ésta.

Luego, puede leer la tabla y crear una lista de las columnas que cumplen con los N vs. N faltantes para cada tienda que necesita eliminar.
Aquí hay un script de muestra para crear la tabla.
names default to here(1);
dt=data table("Fruite Price");
colNames = dt << get column names(continuous);
dtMissing = dt << Summary( invisible,
Group( :Store ),
N Missing( colNames ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
output table name( "N Missing" )
);
dtStack = dtMissing << Stack( invisible,
columns(
colNames
),
Source Label Column( "Product" ),
Stacked Data Column( "N Missing" ),
Output Table( "Stack of N Missing" )
);
dtEval = dtStack <<
Split(
Split By( :Store ),
Split( :N Missing, :N Rows ),
Group( :Product ),
Output Table( "Eval Table" ),
Sort by Column Property
);
Podrías usar la plataforma Tabulate para crear la tabla, pero indicaste que tienes miles de columnas. No creo que Tabulate sea la solución en ese caso; sin embargo, el script anterior debería solucionarlo.