Wie lösche ich Zeilen, in denen Daten in allen Spalten meines Datasets fehlen?Ich entschuldige mich dafür, wie grundlegend meine Frage ist. Ich fange gerade erst an, JMP zum ersten Mal zu verwenden.
Ich habe einen massiven Datensatz (14 Spalten x 20.000 Zeilen) und versuche, ein Skript zu schreiben, das alle Zeilen identifiziert und löscht, die für einen bestimmten Spaltenbereich weder eine 0 noch eine 1 haben (Spalten 4-14). Dieser Datensatz stammt aus einem noch größeren Datensatz, daher enthält meine Teilmenge einige Zeilen, die vollständig leer sind. Hier ist ein Beispiel dafür, was ich mir erhofft hatte:
- - - - -
0 0 1 - 0
- - - - -
1 - - - -
wird:
0 0 1 - 0
1 - - - -
Ich habe angefangen, den Code zu schreiben, aber ich stecke fest - ich bin mir nicht sicher, was ich nach For Each Row tun soll. Ich hatte gehofft, dass dieses Skript jeweils eine Zeile anzeigen würde, und wenn eine bestimmte Zelle keine 0 oder 1 hätte, würde sie in der nächsten Spalte nach einer 0 oder 1 suchen und bis zum Ende der Zeile ohne Nullen oder Einsen würde dann die gesamte Zeile gelöscht. Hier ist mein Code bisher:
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()
)
);Ich habe darüber nachgedacht, es zu benutzen
<< Delete Rows
, die ich bei einigen anderen Fragen in diesem Forum gesehen habe. Wenn dies mit einem Skript zu kompliziert ist, gibt es einen besseren Weg, dies zu tun?
SkriptingBetreff: Wie lösche ich Zeilen, in denen Daten in allen Spalten meines Datasets fehlen?Muss dies ein Skript sein?
Wenn Sie nur eine Zeile finden, in der diese spezifischen Zellen fehlen, wählen Sie die fehlenden Zellen aus.
Gehen Sie nun zum Menü Zeilen und wählen Sie Zeilenauswahl> Übereinstimmende Zellen auswählen.
Jetzt wird jede Zeile ausgewählt, in der Daten in diesen Spalten fehlen. Wählen Sie "Zeilen"> "Zeilen löschen".
Betreff: Wie lösche ich Zeilen, in denen Daten in allen Spalten meines Datasets fehlen?Ich denke, Sie müssen sich die Plattform für fehlende Datenmuster ansehen:
Tabellen => Fehlendes Datenmuster
Aus Ihrer Beschreibung geht hervor, dass es Ihren Anforderungen entspricht.Es analysiert die von Ihnen angegebenen Spalten und wählt dann aus der von ihm erstellten Datentabelle die Spalten aus, in denen alle Werte fehlen, und löscht sie dann.
Betreff: Wie lösche ich Zeilen, in denen Daten in allen Spalten meines Datasets fehlen?oder wenn Sie es schreiben möchten, ist dies mein Vorschlag:
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;Betreff: Wie lösche ich Zeilen, in denen Daten in allen Spalten meines Datasets fehlen?Dieses Skript kümmert sich um Ihre Anfrage. Es ist nicht ganz einzigartig für die anderen Antworten.
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 );
Betreff: Wie lösche ich Zeilen, in denen Daten in allen Spalten meines Datasets fehlen?Wie aus früheren Antworten hervorgeht, gibt es häufig viele Möglichkeiten, eine Aufgabe in JMP auszuführen.
Wenn alle Spalten 4 bis 14 numerisch sind, sollte dieses Skript auch dazu dienen, nur Zeilen mit fehlenden Werten zu löschen.
dt = Current Data Table();
dt << Delete Rows(Loc(Is Missing(V Mean(dt[0, 4 :: 14]`))));