Come la funzione COALESCE in JSLHo cercato la funzione con la quale potremmo avere un valore alternativo (ad esempio A) se la colonna X è nulla, come la funzione COALESCE, e l'equazione potrebbe essere qualcosa del tipo:
COALESCE(:X, A)
se X non è nullo, restituisce il valore di X
se X è nullo, restituisce il valore A
Ho capito che riusciamo ad avere tali risultati avendo un'equazione un po 'complicata, ma mi chiedevo se potessimo avere una funzione simile in JSL per impostazione predefinita.
Grazie mille per il tuo aiuto.
AltroRi: come la funzione COALESCE in JSLÈ possibile utilizzare loc nonmissing per trovare solo il primo, funziona per valori mancanti e caratteri vuoti.
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
// blanking out some rows.
dt:age[[2, 5, 8]] = .;
dt:sex[[2, 9, 18]] = "";
dt:height[[2, 4, 14]] = .;
dt:weight[[1, 4, 14]] = .;
coalesce = function({list_of_whatever},
{DEFAULT LOCAL},
l = Evallist(list_of_whatever);
lnm = LocNonMissing(l);
if(nitems(lnm),
return(char(l[lnm[1]])); // assuming you'll want to use both numeric and character columns
);
);
// this should never be the weight value
New Column("Coalesce", character,
<<FORMULA></FORMULA>Ri: come la funzione COALESCE in JSLNon c'è built-in COALESCE funzione in JSL. Tuttavia, per una singola colonna, la formula non è così complicata:
if( !Is Missing( :X ),
:X, //:X is not missing
"A" //else
);
Certo, diventa un po 'più lungo con più colonne, ma non è ancora così male.
if(
!Is Missing( :X ), :X, //:X is not missing
!Is Missing( :Y ), :Y, //:Y is not missing
!Is Missing( :Z ), :Z, //:Z is not missing
"A" //else
);
Manca() prenderà un elenco o un argomento di matrice e restituirà un elenco o una matrice di 0 e 1 che indicano la mancanza o l'assenza di tali posizioni.
Is Missing( {"a", " ", "c"} ); // returns {0, 1, 0}
Forse qualcuno più intelligente di me può usarlo per fare una versione più semplice.
E, naturalmente, qualunque metodo tu scelga può essere utilizzato per creare un file funzione personalizzata , Coalesce ().