Pregunta JSL: seleccione columnas y reemplace los valores faltantes con cero¿Alguien tiene un script para eliminar columnas que solo contienen valores faltantes? Estoy tropezando con la limpieza de una tabla de datos y esto sería muy útil para automatizar este proceso.
Gracias,
Pete
Re: Pregunta JSL: seleccione columnas y reemplace los valores faltantes con ceroHablé (escribí) demasiado pronto. Una vez que la matriz (tabla de datos) se vuelve un poco más grande, el primer método es más rápido. En una matriz de 100,000 filas x 1000 col, el primer método toma 2.48 segundos mientras que el segundo toma 6.51 segundos. Mi suposición es que para tablas realmente grandes, el primer método será simplemente lento, mientras que el segundo método será insoportablemente.
Salud,
Brady
Re: Pregunta JSL: seleccione columnas y reemplace los valores faltantes con ceroHola Pete, pensé en esto más tarde ... Es mucho más rápido que el primer método que propuse. Por ejemplo, en una tabla de columnas de 1000 filas x1000, el primer método tomó 0.82 segundos, mientras que este método tomó 0.017 segundos.
dt << Delete Columns( Loc( V Max( Is Missing( dt << Get All Columns As Matrix ) ) ) );
Re: Pregunta JSL: seleccione columnas y reemplace los valores faltantes con cero @brady_brady 's es probablemente mejor, pero se me ocurrió usar las funciones All () y Loc () para las columnas Numéricas y de Carácter.
Algo como esto:
dt=New Table( "untitled 25 2",
Add Rows( 4 ),
New Column( "Column 1",
Character,
"Nominal",
Set Values( {"a", "a", "a", "a"} )
),
New Column( "Column 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [., ., ., .] )
),
New Column( "Column 3", Character, "Nominal", Set Values( {"", "", "", ""} ) ),
New Column( "Column 4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [., 0, 0, 0] )
)
);
For( i = N Cols( dt ), i > 0, i--,
vals = Column( dt, i ) << get values;
show(vals);
If( (Column( dt, i ) << get data type) == "Character",
Show( Loc( vals, "" ) ),
Show( all( vals ) )
);
);
Re: Pregunta JSL: seleccione columnas y reemplace los valores faltantes con ceroGracias brady
Re: Pregunta JSL: seleccione columnas y reemplace los valores faltantes con ceroPete, si quieres eliminar las columnas (el tema de la publicación dice reemplazar las faltas con ceros), esto lo hará.
dt = current data table();
For( i = N Col( dt ), i >= 1, i--,
If( Max( Is Missing( dt[0, i] ) ) > 0,
dt << Delete Columns( i )
)
);
Re: Pregunta JSL: seleccione columnas y reemplace los valores faltantes con ceroGracias Mike
¿Conoces una manera de escribir esto? Había llegado a una solución similar, pero no pude encontrar una manera de tener esto completamente contenido en un script.
Re: Pregunta JSL: seleccione columnas y reemplace los valores faltantes con ceroPuede hacerlo utilizando el Explorador de valores perdidos ... suponiendo que los datos sean numéricos. Simplemente use la opción "mostrar solo cols con faltante". Luego (asegúrese de no tener ninguna fila seleccionada en la tabla de datos de antemano) seleccione las columnas en el MVE que tengan el mismo número de valores faltantes que las filas en la tabla de datos. Esto seleccionará los cols nuevamente en la tabla de datos. A continuación, puede eliminar las columnas haciendo clic con el botón derecho o utilizando el menú del triángulo rojo.
Mejor,
METRO