Comme la fonction COALESCE dans JSLJe cherchais la fonction avec laquelle nous pourrions avoir une valeur alternative (par exemple A) si la colonne X est nulle, comme la fonction COALESCE, et l'équation pourrait être quelque chose comme:
COALESCE(:X, A)
si X n'est pas nul, alors il renvoie la valeur de X
si X est nul, alors il renvoie la valeur A
J'ai compris que nous parvenions à avoir de tels résultats en ayant une équation un peu compliquée, mais je me demandais si nous pourrions avoir une fonction similaire en JSL par défaut.
Merci beaucoup pour votre aide.
AutreRe: Comme la fonction COALESCE dans JSLVous pouvez utiliser loc nonmissing pour trouver simplement le premier, cela fonctionne pour les valeurs manquantes ainsi que pour les caractères vides.
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>Re: Comme la fonction COALESCE dans JSLIl n'y a pas de SE FONDRE fonction dans JSL. Cependant, pour une seule colonne, la formule n'est pas si compliquée:
if( !Is Missing( :X ),
:X, //:X is not missing
"A" //else
);
Certes, cela devient un peu plus long avec plus de colonnes, mais ce n'est toujours pas trop mal.
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
);
Est manquant() prendra une liste ou un argument de matrice et retournera une liste ou une matrice de 0 et de 1 indiquant manquant ou non à ces emplacements.
Is Missing( {"a", " ", "c"} ); // returns {0, 1, 0}
Peut-être que quelqu'un de plus intelligent que moi peut l'utiliser pour en faire une version plus simple.
Et, bien sûr, la méthode que vous choisissez peut être utilisée pour créer un fonction personnalisée , Coalesce ().