Come faccio a eliminare le righe in cui mancano dati in tutte le colonne del mio set di dati?Mi scuso per quanto sia basilare la mia domanda, ho appena iniziato a utilizzare JMP per la prima volta.
Ho un enorme set di dati (14 colonne x 20.000 righe) e sto cercando di scrivere uno script che identificherà ed eliminerà tutte le righe che non hanno uno 0 o 1 per un intervallo specifico di colonne (colonne 4-14). Questo set di dati proviene da un set di dati ancora più grande, quindi ci sono alcune righe nel mio sottoinsieme che sono completamente vuote. Ecco un esempio di quello che speravo di fare:
- - - - -
0 0 1 - 0
- - - - -
1 - - - -
diventa:
0 0 1 - 0
1 - - - -
Ho iniziato a scrivere il codice, ma sono bloccato: non sono sicuro di cosa fare dopo For Each Row. Speravo che questo script guardasse una riga alla volta e se una cella particolare non avesse uno 0 o un 1, avrebbe cercato uno 0 o un 1 nella colonna successiva e se fosse arrivato alla fine della riga senza 0 o 1, eliminerebbe l'intera riga. Ecco il mio codice finora:
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()
)
);Stavo pensando di usare
<< Delete Rows
, che ho visto su altre domande su questo forum. Se questo è troppo complicato con uno script, c'è un modo migliore per farlo?
ScriptingRi: Come faccio a eliminare le righe che mancano di dati in tutte le colonne del mio set di dati?Deve essere uno script?
Se trovi solo una riga in cui mancano quelle celle specifiche, seleziona le celle mancanti.
Ora vai al menu Righe e seleziona Selezione riga> Seleziona celle corrispondenti.
Ora verranno selezionate tutte le righe che mancano di dati in quelle colonne. Scegli Righe> Elimina righe.
Ri: Come faccio a eliminare le righe che mancano di dati in tutte le colonne del mio set di dati?Penso che sia necessario esaminare la piattaforma Missing Data Pattern:
Tabelle => Pattern dati mancanti
Dalla tua descrizione, sembra che soddisferà le tue esigenze.Analizzerà le colonne specificate e quindi dalla tabella dati che produce, è possibile selezionare le colonne con tutti i valori mancanti e quindi eliminarle.
Ri: Come faccio a eliminare le righe che mancano di dati in tutte le colonne del mio set di dati?o se vuoi creare uno script, questo è il mio suggerimento:
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;Ri: Come faccio a eliminare le righe che mancano di dati in tutte le colonne del mio set di dati?Questo script si prenderà cura della tua richiesta. Non è del tutto unica delle altre risposte.
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 );
Ri: Come faccio a eliminare le righe che mancano di dati in tutte le colonne del mio set di dati?Come mostrato dalle risposte precedenti, spesso esistono molti modi per eseguire un'attività in JMP.
Se tutte le colonne 4-14 sono numeriche, questo script dovrebbe funzionare anche per eliminare solo le righe con valori mancanti.
dt = Current Data Table();
dt << Delete Rows(Loc(Is Missing(V Mean(dt[0, 4 :: 14]`))));