¿Cómo elimino filas a las que les faltan datos en todas las columnas de mi conjunto de datos?Disculpas por lo básica que es mi pregunta, estoy empezando a usar JMP por primera vez.
Tengo un conjunto de datos masivo (14 columnas x 20,000 filas) y estoy tratando de escribir un script que identificará y eliminará todas las filas que no tengan un 0 o 1 para un rango específico de columnas (columnas 4-14). Este conjunto de datos es de un conjunto de datos aún más grande, por lo que hay algunas filas en mi subconjunto que están completamente vacías. Aquí hay un ejemplo de lo que esperaba hacer:
- - - - -
0 0 1 - 0
- - - - -
1 - - - -
se convierte en:
0 0 1 - 0
1 - - - -
Empecé a escribir el código, pero estoy atascado; no estoy seguro de qué hacer después de For Each Row. Esperaba que este script mirara una fila a la vez, y si una celda en particular no tuviera un 0 o un 1, buscaría un 0 o un 1 en la siguiente columna, y si llegaba al final de la fila sin 0 ni 1, entonces eliminaría toda esa fila. Aquí está mi código hasta ahora:
dt=Open("File Name")
colnames = dt << get column names( numeric,string );
For( i = 4, i <= N Items( colnames ), i++,
For Each Row(If(:colnames != 0 | :colnames != 1), Continue()
)
);Estaba pensando en usar
<< Delete Rows
, que he visto en otras preguntas de este foro. Si esto es demasiado complicado con un script, ¿hay una mejor manera de hacerlo?
ScriptingRe: ¿Cómo elimino las filas a las que les faltan datos en todas las columnas de mi conjunto de datos?¿Tiene que ser un guión?
Si encuentra solo una fila a la que le faltan esas celdas específicas, seleccione las celdas que faltan.
Ahora vaya al menú Filas y seleccione Selección de fila> Seleccionar celdas coincidentes.
Ahora se seleccionarán todas las filas en las que falten datos en esas columnas. Elija Filas> Eliminar filas.
Re: ¿Cómo elimino las filas a las que les faltan datos en todas las columnas de mi conjunto de datos?Creo que debes mirar la plataforma Missing Data Pattern:
Tablas => Patrón de datos faltantes
Según su descripción, parece que satisfará sus necesidades.Analizará las columnas que especifique y luego, de la tabla de datos que produce, puede seleccionar las columnas con todos los valores faltantes y luego eliminarlos.
Re: ¿Cómo elimino las filas a las que les faltan datos en todas las columnas de mi conjunto de datos?o si quieres escribirlo, esta es mi sugerencia:
dt << New Column("Selected", Character, Nominal, Formula(
If(Is Missing(:Column4) | Is Missing(:Column5)|...until column14,
"Yes",
"No"
)
));
dt << Select Where(:Selected == "Yes");
dt << Delete Rows;Re: ¿Cómo elimino las filas a las que les faltan datos en todas las columnas de mi conjunto de datos?Este script se encargará de su solicitud. No es completamente único de las otras respuestas.
Names Default to Here( 1 );
// get reference to target data table
dt = Current Data Table();
// get all the columns for missing value check
cols = dt << Get Column Names;
// obtain missing value patterns
missing = Current Data Table() << Missing Data Pattern(
Columns( Eval( cols ) ),
Output Table( "Missing Data Pattern" )
);
// make character string representing missing values in all columns
n missing = N Items( cols );
all missing = Repeat( "1", n missing );
// find the row of patterns where all columns are missing.
missing << Select Where( :Patterns == all missing );
// delete the linked rows in the original table
dt << Delete Rows;
// clean up
Close( missing, No Save );
Re: ¿Cómo elimino las filas a las que les faltan datos en todas las columnas de mi conjunto de datos?Como se muestra en respuestas anteriores, a menudo hay muchas formas de realizar una tarea en JMP.
Si todas las columnas 4-14 son numéricas, esta secuencia de comandos también debería funcionar para eliminar filas con valores perdidos solamente.
dt = Current Data Table();
dt << Delete Rows(Loc(Is Missing(V Mean(dt[0, 4 :: 14]`))));