Come sostituire i valori mancanti con '0' utilizzando JSL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Come posso sostituire i valori mancanti con '0' usando JSL?
Posso farlo manualmente usando "Trova e sostituisci tutto", ma devo incorporarlo in un codice che viene eseguito automaticamente ogni giorno.
Ri: Come sostituire i valori mancanti con '0' usando JSLFunziona quando lo eseguo da una finestra di scripting utilizzando il pulsante di riproduzione, ma non all'interno di un debugger o avviandolo tramite l'esecuzione automatica di .jsl.
dtLongestWaitStates << set name( "LongestWaitStates" );
dtLongestWaitStates = Current Data Table();
nc = dtLongestWaitStates << get column names( numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dtLongestWaitStates << get rows where( Is Missing( nc[i][] ) )] = 0
);
RaginCajun
JMP13.2.1
Ri: Come sostituire i valori mancanti con '0' usando JSLAssolutamente, apprezzo la parola di cautela.Di sicuro, non ci ho pensato.
È anche importante ricordare che i dati mancanti possono essere dati preziosi e talvolta è meglio lasciarli così come sono!
Ri: Come sostituire i valori mancanti con '0' usando JSLÈ tutto vero.Mi sembrava che fosse giunto il momento di mettere una bandiera di cautela.Solo perché noi Potere fare qualcosa in JMP non sempre significa noi Dovrebbe .
Ri: Come sostituire i valori mancanti con '0' usando JSLMentre quello che dici è vero, fa supposizioni sui dati.Ad esempio, forse i suoi dati non sono continui?A volte 0 non viene registrato e invece lasciato come mancante.Se qualcuno provasse a fare un'analisi Oneway usando 0 come falso e 1 come vero avrebbero un problema se il loro zero finisse per essere visualizzato come mancante , poiché l'analisi Oneway ignora le righe mancanti in JMP.Finirebbero con UNA SOLA categoria!
Ci sono altri motivi per cui 0 potrebbe apparire come mancante.Di solito la memorizzazione di 0 in un database di grandi dimensioni è uno spreco di spazio.Dato che Pokemon Go è grande in questo momento, lo userò come esempio.Potrei voler registrare tutti i pokemon che ho catturato in un giorno, 12 ratatta e 6 pidgey.Tuttavia, non vorrei memorizzare 0 per gli altri 148 pokemon che non ho catturato quel giorno.Se lo facessi, riempirei rapidamente il mio database di informazioni inutili.Quindi, se interrogassi i miei dati, mi mancherebbe la maggior parte dei miei pokemon in un dato momento, ma mancante è = a 0.
In situazioni simili potresti ottenere dati mancanti equivalenti a 0 b/c di problemi di conversione dei dati, query mal progettate, ecc.
Ri: Come sostituire i valori mancanti con '0' usando JSLMi dispiace essere in ritardo a questa festa, ma mi sento in dovere di intervenire: l'impostazione dei valori mancanti su zero (o la media o qualsiasi altro metodo di imputazione singola) ha seri inconvenienti.La maggior parte di questi approcci produce stime dei parametri distorte, anche in condizioni ideali in cui i dati mancano completamente a caso.Ci sono modi molto migliori per gestire i dati mancanti.
Ri: Come sostituire i valori mancanti con '0' usando JSLDal momento che nessun altro ha risposto, la soluzione è la stessa, prendi invece le colonne di caratteri e imposta le righe uguali al carattere che ritieni appropriato: "N/A" nel caso seguente.
Fai solo attenzione, impostandolo =0 cambierà la colonna in numerica e rimuoverà tutti i dati dei caratteri, tuttavia ="0" dovrebbe andare bene.
dt = Current Data Table();
nc = dt << get column names( Character );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = "N/A"
);
Ri: Come sostituire i valori mancanti con '0' usando JSLFreddo! ... nelle ultime 2 righe, clsRej dovrebbe essere sostituito con clsMat, giusto?
nel frattempo, abbiamo soluzioni simili per la colonna dei caratteri?
Ri: Come sostituire i valori mancanti con '0' usando JSLUn altro modo...
clsMat = dt << Get As Matrix( {"colA", "colB"} );
clsMat[Loc( Is Missing( clsMat ) )] = 0;
:colA << Set Values( clsRej[0, 1] );
:colB << Set Values( clsRej[0, 2] );
eccetera.
l'indicizzazione logica è spesso più veloce dei loop
Ri: Come sostituire i valori mancanti con '0' usando JSLgrazie a tutti!
saluti!
Ri: Come sostituire i valori mancanti con '0' usando JSLAncora un altro modo per farlo ma con un singolo ciclo (solo colonne numeriche).
dt = Current Data Table();
nc = dt << get column names( Numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = 0
);
Ri: Come sostituire i valori mancanti con '0' usando JSLQuesto è essenzialmente lo stesso della risposta di exj ma un po' più pulito.Lo fa; tuttavia, solo il cambiamento manca nelle colonne numeriche.
dt = current data table();
for(ij = 1, ij <= NCol(dt), ij +=1,
CurCol = Column(dt, ij);
If(CurCol << get data type == "Numeric",
For Each Row(
IF(IsMissing(CurCol[]), CurCol[] = 0)
);
);
);
Ri: Come sostituire i valori mancanti con '0' usando JSLEviterei di usare j come variabile di loop perché è anche una funzione JSL.
J(nrighe, , )
Funzione: Crea una matrice di valori identici.
Ritorna: La matrice.
Argomenti:
righe: Numero di righe nella matrice. Se ncols non è specificato, nrow è anche usato come ncols .
ncoli: Numero di colonne nella matrice.
valore: Il valore utilizzato per popolare la matrice. Se valore non è specificato, viene utilizzato 1.
Ri: Come sostituire i valori mancanti con '0' usando JSLCIAO,
Questo è basato sul libro "Jump into scripting". Sostituisco tutti i valori mancanti con z.
allCols = dt2 << Get Column Names( String );
For( i = 1, i <= N Items( allCols ), i++,
/* Loop through each row. */
For( j = 1, j <= N Rows( dt2 ), j++,
/* The IsMissing function will return a ‘1’ or true if the
value is missing. If true, cell is assigned zero. */
If( Is Missing( Column( dt2, allCols ) ),
Column( dt2, allCols ) = "z"
)
)
);
Spero che questo ti aiuti.