Domanda JSL: selezionare le colonne e sostituire i valori mancanti con zeroQualcuno ha uno script per rimuovere le colonne che contengono solo valori mancanti? Mi sto imbattendo nella pulizia di una tabella di dati e questo sarebbe molto utile per automatizzare questo processo.
Grazie,
Pete
Ri: Domanda JSL: selezionare le colonne e sostituire i valori mancanti con zeroHo parlato (digitato) troppo presto. Quando la matrice (datatable) diventa un po 'più grande, il primo metodo è più veloce. Su una matrice da 100.000 righe x 1000 col, il primo metodo richiede 2,48 secondi mentre il secondo richiede 6,51 secondi. La mia ipotesi è che per le tabelle veramente grandi, il primo metodo sarà semplicemente lento, mentre il secondo metodo lo sarà in modo lancinante.
Saluti,
Brady
Ri: Domanda JSL: selezionare le colonne e sostituire i valori mancanti con zeroEhi Pete, ci ho pensato dopo ... è molto più veloce del primo metodo che ho proposto. Ad esempio, su una tabella di colonne 1000 righe x1000, il primo metodo ha richiesto 0,82 secondi, mentre questo metodo ha richiesto 0,017 secondi.
dt << Delete Columns( Loc( V Max( Is Missing( dt << Get All Columns As Matrix ) ) ) );
Ri: Domanda JSL: selezionare le colonne e sostituire i valori mancanti con zero @brady_brady Probabilmente è meglio, ma mi è venuto in mente di usare le funzioni All () e Loc () per le colonne Numerico e Carattere.
Qualcosa come questo:
dt=New Table( "untitled 25 2",
Add Rows( 4 ),
New Column( "Column 1",
Character,
"Nominal",
Set Values( {"a", "a", "a", "a"} )
),
New Column( "Column 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [., ., ., .] )
),
New Column( "Column 3", Character, "Nominal", Set Values( {"", "", "", ""} ) ),
New Column( "Column 4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [., 0, 0, 0] )
)
);
For( i = N Cols( dt ), i > 0, i--,
vals = Column( dt, i ) << get values;
show(vals);
If( (Column( dt, i ) << get data type) == "Character",
Show( Loc( vals, "" ) ),
Show( all( vals ) )
);
);
Ri: Domanda JSL: selezionare le colonne e sostituire i valori mancanti con zeroGrazie Brady
Ri: Domanda JSL: selezionare le colonne e sostituire i valori mancanti con zeroPete, se vuoi eliminare le colonne (l'oggetto del post dice che sostituisci i mancati con gli zeri) questo lo farà.
dt = current data table();
For( i = N Col( dt ), i >= 1, i--,
If( Max( Is Missing( dt[0, i] ) ) > 0,
dt << Delete Columns( i )
)
);
Ri: Domanda JSL: selezionare le colonne e sostituire i valori mancanti con zeroGrazie Mike,
Conosci un modo per scrivere questo? Ero arrivato a una soluzione simile, ma non riuscivo a trovare un modo per avere tutto questo contenuto in una sceneggiatura.
Ri: Domanda JSL: selezionare le colonne e sostituire i valori mancanti con zeroPuoi farlo usando Esplora valori mancanti ... supponendo che i dati siano numerici. Basta usare l'opzione "mostra solo i caratteri mancanti". Quindi (assicurati di non aver precedentemente selezionato alcuna riga nella tabella dei dati) seleziona le colonne nel MVE che hanno lo stesso numero di valori mancanti delle righe nella tabella dei dati. Questo selezionerà i col nella tabella dei dati. È quindi possibile eliminare i cols facendo clic con il tasto destro o utilizzando il menu triangolo rosso.
Migliore,
M