Eliminazione di colonne che soddisfano un criterio numericoCiao
Ho diverse migliaia di colonne nella mia tabella e vorrei tagliarle solo a quelle colonne che hanno principalmente numeri diversi da zero. cioè cancellare o raggruppare e comprimere quelle colonne che hanno zeri per più della metà delle righe. Qualche consiglio?
Grazie!
Ri: Eliminazione di colonne che soddisfano un criterio numericoNon l'ho provato ma questo script ti dà un'idea.
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 ) );
);
);
Ri: Eliminazione di colonne che soddisfano un criterio numericoGrazie - la tabella è aperta, ma avrebbe bisogno di aiuto con la sintassi per come fare riferimento ad essa nella variabile dt.
<SPAN class="token comment">// assume that data table is open and reference to it is stored in variable dt</SPAN>
Ri: Eliminazione di colonne che soddisfano un criterio numericodt = Current Data Table();
Ri: Eliminazione di colonne che soddisfano un criterio numericoRende JMP non reattivo! Non per attività della CPU, ma non riesco a interagire con la finestra della tabella per minuti ...
Ri: Eliminazione di colonne che soddisfano un criterio numericoPer le tabelle di grandi quantità di dati, una soluzione matriciale potrebbe essere più veloce dell'iterazione su tutte le colonne.
Esempio:
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);
Ri: Eliminazione di colonne che soddisfano un criterio numericoIl mio tavolo aveva 55 K cols e questo ne ha rimosso ~ 17K. Quindi ha funzionato.