脚本中的JMP帮助你好,
我正在尝试根据其他列更新一列。 如果无法更新,我也很高兴使用公式创建一个新列。 但是我无法做到这一点。 查看我的样本以及解决方案数据和图像。
所以说,对于
如果缺少“ Site_B”并且“ Data_set_ID” = 221或169或136,则“ customer_id” = A =>将“ Site_B” =“ Site_B”放在“ Data_set_ID” = 142
和
另一个类似的条件(最多4或5个条件)
并对所有客户重复此操作-B,C,AA,AD等。
有什么帮助吗?
谢谢。
脚本编写回复:脚本中的JMP帮助根据“讨论”请求中使用的语法,您没有受过JSL语法的教育。您需要花一些时间阅读《脚本指南》,以精通JSL。
下面是根据Sample_Data_Solution.jpg中的Blue和Red伪代码满足我所理解的所需的JSL
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]]
)
)
);
回复:脚本中的JMP帮助嗨纳尔逊,
感谢您的回复和评论。 我需要在JMP中学习很多东西。
我正在寻找嵌套的“ For Loop”。 我的意思是在您的脚本中,我需要在“ Customer_ID”上进行另一个循环。 在我的数据集中,我有6000-7000多个客户ID。
谢谢。
回复:脚本中的JMP帮助你好
我的意思是,在您的代码中,我无法像if语句那样手动分配customer_id-
:Customer_ID [i] ==“ A”,
:Customer_ID [i] ==“ B”,
对我来说,这将是6000-7000 alpha数字变量。 喜欢
:Customer_ID [i] ==“ 9UHIW”,
:Customer_ID [i] ==“ 7EIGO”,依此类推。
因此,我需要另一个循环来标识每个唯一的Customer_ID,然后在其上实现您的脚本。
谢谢。
回复:脚本中的JMP帮助这应该使您有能力解决需要的东西
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]]
)
)
);
);