스크립트의 JMP 도움말여보세요,
다른 열을 기반으로 열을 업데이트하려고합니다. 업데이트가 불가능한 경우 수식을 사용하여 새 열을 만들 수 있습니다. 그러나 나는 그렇게하기 위해 마법사를 사용할 수 없습니다. 내 샘플 및 솔루션 데이터와 이미지를 참조하십시오.
그래서
"customer_id"= A, "Site_B"가 누락되고 "Data_set_ID"= 221 또는 169 또는 136 => Put "Site_B"= "Site_B"at "Data_set_ID"= 142
과
또 다른 유사한 조건 (최대 4 개 또는 5 개 조건)
모든 고객 (B, C, AA, AD 등)에 대해 동일하게 반복합니다.
도와주세요.
감사.
스크립팅Re : 스크립트의 JMP 도움말토론 요청에 사용 된 구문에서 JSL 구문에 대한 교육을받지 못했습니다.JSL에 능숙 해지려면 시간을내어 Scripting Guide를 읽어야합니다.
아래는 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]]
)
)
);
Re : 스크립트의 JMP 도움말안녕하세요 넬슨,
답장과 의견을 보내 주셔서 감사합니다. JMP에서 많은 것을 배워야합니다.
중첩 된 "For 루프"를 찾고 있습니다. 귀하의 스크립트에서 "Customer_ID"에 대한 또 다른 루프가 필요합니다. 내 데이터 세트에는 6000-7000 개 이상의 고객 ID가 있습니다.
감사.
Re : 스크립트의 JMP 도움말안녕,
나는 귀하의 코드에서 if 문에서와 같이 customer_id를 수동으로 할당 할 수 없음을 의미합니다.
: Customer_ID [i] == "A",
: Customer_ID [i] == "B",
이것은 6000-7000의 영숫자 변수입니다. 처럼
: Customer_ID [i] == "9UHIW",
: Customer_ID [i] == "7EIGO"등
따라서 고유 한 각 Customer_ID를 식별 한 다음 스크립트를 구현하는 또 다른 루프가 필요합니다.
감사.
Re : 스크립트의 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]]
)
)
);
);