Spalten löschen, die einem numerischen Kriterium entsprechenHallo
Ich habe mehrere tausend Spalten in meiner Tabelle und möchte sie nur auf die Spalten zuschneiden, die meistens Zahlen ungleich Null enthalten. dh löschen oder gruppieren und reduzieren Sie die Spalten, die für mehr als die Hälfte der Zeilen Nullen enthalten. Irgendwelche Tipps?
Vielen Dank!
Betreff: Löschen von Spalten, die einem numerischen Kriterium entsprechenIch habe es nicht getestet, aber dieses Skript gibt Ihnen eine Idee.
Names Default to Here( 1 );
// assume that data table is open and reference to it is stored in variable dt
For( c = N Col( dt ), c > 0, c--,
n zero = dt << Get Rows Where( Column( c )[] == 0 );
If( n zero / N Row( dt ) > 0.5,
dt << Delete Columns( Column( c ) );
);
);
Betreff: Löschen von Spalten, die einem numerischen Kriterium entsprechenDanke - die Tabelle ist offen, würde aber Hilfe bei der Synatx brauchen, um darauf in der dt-Variablen zu verweisen.
<SPAN class="token comment">// assume that data table is open and reference to it is stored in variable dt</SPAN>
Betreff: Löschen von Spalten, die einem numerischen Kriterium entsprechendt = Current Data Table();
Betreff: Löschen von Spalten, die einem numerischen Kriterium entsprechenJMP reagiert nicht mehr! Nicht nach CPU-Aktivität - kann aber nur Minuten lang nicht mit dem Tabellenfenster interagieren ...
Betreff: Löschen von Spalten, die einem numerischen Kriterium entsprechenBei großen Datentabellen ist eine Matrixlösung möglicherweise schneller als das Iterieren über alle Spalten.
Beispiel:
dt = Current Data Table();
m = dt << get all columns as matrix; // Get table as matrix
// Get list of columns with > 50% zeroes
zero_cols = (dt << get column names)[(Loc(V Sum(m == 0) / N Row(m) > 0.5))];
// Delete them (or group them)
dt << Delete Columns(zero_cols);
// dt << Group Columns("zero", zero_cols);
Betreff: Löschen von Spalten, die einem numerischen Kriterium entsprechenMein Tisch hatte 55K cols und das entfernte ~ 17K von ihnen. Also hat es geklappt.