Suppression de colonnes correspondant à un critère numériquesalut
J'ai plusieurs milliers de colonnes dans mon tableau et j'aimerais l'ajuster uniquement aux colonnes qui ont généralement des nombres non nuls. c'est-à-dire supprimer ou regrouper et réduire ces colonnes contenant des zéros pour plus de la moitié des lignes. Des conseils?
Merci!
Re: Suppression de colonnes qui correspondent à un critère numériqueJe ne l'ai pas testé mais ce script vous en donne une idée.
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 ) );
);
);
Re: Suppression de colonnes qui correspondent à un critère numériqueMerci - la table est ouverte, mais aurait besoin d'aide avec le synatx pour savoir comment s'y référer dans la variable dt.
<SPAN class="token comment">// assume that data table is open and reference to it is stored in variable dt</SPAN>
Re: Suppression de colonnes qui correspondent à un critère numériquedt = Current Data Table();
Re: Suppression de colonnes qui correspondent à un critère numériqueCela rend JMP non réactif! Pas par l'activité du processeur - mais ne peut tout simplement pas interagir avec la fenêtre de la table pendant quelques minutes ...
Re: Suppression de colonnes qui correspondent à un critère numériquePour les tables de données volumineuses, une solution matricielle peut être plus rapide que de parcourir toutes les colonnes.
Exemple:
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);
Re: Suppression de colonnes qui correspondent à un critère numériqueMa table avait 55K cols et cela enlevé ~ 17K d'entre eux. Donc ça a marché.