Aide JMP dans le scriptBonjour,
J'essaye de mettre à jour une colonne basée sur d'autres colonnes. Si la mise à jour n'est pas possible, je suis heureux de créer une nouvelle colonne également en utilisant une formule. Mais je ne suis pas capable de faire ça. Voir mes exemples et mes données et images de solution.
Alors disons, pour un
"customer_id" = A, si "Site_B" est manquant et "Data_set_ID" = 221 ou 169 ou 136 => Mettez "Site_B" = "Site_B" à "Data_set_ID" = 142
Et
Une autre condition similaire (jusqu'à 4 ou 5 conditions)
Et répétez la même chose pour tous les clients - B, C, AA, AD, etc.
Une aide s'il vous plaît?
Merci.
ScriptingRe: Aide JMP dans le scriptD'après la syntaxe utilisée dans votre demande de discussion, vous n'êtes pas formé à la syntaxe de JSL.Vous devez prendre le temps de lire le guide de script pour devenir compétent en JSL.
Vous trouverez ci-dessous le JSL requis pour répondre à ce que je comprends comme ce dont vous avez besoin, basé sur le pseudo-code bleu et rouge dans le Sample_Data_Solution.jpg
names default to here(1);
dt=current data table();
for(i=1,i<=N Rows(dt),i++,
If(:Customer_ID[i] == "A",
if(IsMissing(:Site_B[i]) & (:Data_set_ID[i] == 44 | :Data_set_ID[i] == 87),
:Site_B[i] = :Site_B[ (dt << get rows where( :Data_set_ID == 142))[1]]
,
IsMissing(:Site_B[i]) & (:Data_set_ID[i] == 221 | :Data_set_ID[i] == 169 | :Data_set_ID[i] == 136),
:Site_B[i] = :Site_B[ (dt << get rows where( :Data_set_ID == 164))[1]]
)
,
:Customer_ID[i] == "B",
if(IsMissing(:Site_B[i]) & (:Data_set_ID[i] == 44 | :Data_set_ID[i] == 87),
:Site_B[i] = :Site_B[ (dt << get rows where( :Data_set_ID == 142))[1]]
,
IsMissing(:Site_B[i]) & (:Data_set_ID[i] == 221 | :Data_set_ID[i] == 169 | :Data_set_ID[i] == 136),
:Site_B[i] = :Site_B[ (dt << get rows where( :Data_set_ID == 164))[1]]
)
)
);
Re: Aide JMP dans le scriptSalut Nelson,
Merci pour la réponse et le commentaire. J'ai besoin d'apprendre beaucoup de choses en JMP.
Je recherche un "For Loop" imbriqué. Je veux dire dans votre script, j'ai besoin d'une autre boucle sur "Customer_ID". Dans mon ensemble de données, j'ai plus de 6000 à 7000 identifiants clients.
Merci.
Re: Aide JMP dans le scriptSalut,
Je veux dire dans votre code, je ne peux pas attribuer le customer_id manuellement comme, à côté de l'instruction if -
: Customer_ID [i] == "A",
: Customer_ID [i] == "B",
Ce serait une variable alphanumérique 6000-7000 pour moi. Comme
: Customer_ID [i] == "9UHIW",
: Customer_ID [i] == "7EIGO", etc.
j'ai donc besoin d'une autre boucle qui identifie chaque Customer_ID unique, puis implémente votre script dessus.
Merci.
Re: Aide JMP dans le scriptCela devrait vous donner une longueur d'avance pour résoudre ce dont vous avez besoin
names default to here(1);
dt=current data table();
summarize( dt, cusID = By(:Customer_ID) );
For( i = 1, i <= N Rows( dt ), i++,
currCustomer_ID = :Customer_ID[i];
For( k = 1, k <= N Items( cusID ), k++,
If( :Customer_ID[i] == cusID[k],
If(
Is Missing( :Site_B[i] ) & (:Data_set_ID[i] == 44 | :Data_set_ID[i] == 87),
:Site_B[i] = :Site_B[(dt << get rows where( :Data_set_ID == 142 & :Customer_ID == currCustomer_ID ))[1]],
Is Missing( :Site_B[i] ) & (:Data_set_ID[i] == 221 | :Data_set_ID[i] == 169 | :Data_set_ID[i] == 136),
:Site_B[i] = :Site_B[(dt << get rows where( :Data_set_ID == 164 & :Customer_ID == currCustomer_ID ))[1]]
)
)
);
);