JMP 커뮤니티에 오신 것을 환영합니다!
그래서 데이터 분석을 자동화하려고하는데 JMP 스크립트는 대단히 많이 코딩되어 있습니다. 이 기능을 더욱 강력하게 만들고 싶지만 한 부분에 문제가 있습니다.
내 스크립트에서 수행하는 작업은 열의 모든 행을 통과하고 각 행의 문자열 값을 파싱하는 것입니다. 데이터가 다음과 같은 문자열 형식으로 수집되기 때문에 : 0.002 | 0.003 | 0.004 | 0.005 | .... 기타 '|'로 구분됩니다. 내 스크립트는 30 개의 새 열을 만듭니다 (구분 된 문자열에서 기대하는 값의 수이기 때문에). 그런 다음 중첩 된 for 루프로 이동하여 모든 데이터를 구분 기호로 구문 분석하고 값을 적절한 열에 순서대로 넣습니다. 내가 방금 발견 한 것은 어쩌면 문자열에 30 개의 값이 모두없는 것입니다 ... 그것은 단지 20을 가질 것입니다. 이 경우 JMP에서 오류가 발생하고 스크립트가 종료됩니다. JMP가 그 오류에 신경 쓰지 않고 스크립트를 계속 실행하려면 어떻게해야합니까? (나는 단지 20 개의 값을 가진 행을 실행하는 끝에 Continue () 함수를 추가했지만 나머지 데이터 테이블에 대해서는 데이터를 구문 분석하지 않습니다 ...)
이것은 내 코드입니다.
dt << New Column("Year1", Numeric, Continuous, Format("Best",12))
<< New Column("Year2", Numeric, Continuous, Format("Best",12))
<< New Column("Year3", Numeric, Continuous, Format("Best",12))
<< New Column("Year4", Numeric, Continuous, Format("Best",12))
<< New Column("Year5", Numeric, Continuous, Format("Best",12))
<< New Column("Year6", Numeric, Continuous, Format("Best",12))
<< New Column("Year7", Numeric, Continuous, Format("Best",12))
<< New Column("Year8", Numeric, Continuous, Format("Best",12))
<< New Column("Year9", Numeric, Continuous, Format("Best",12))
<< New Column("Year10", Numeric, Continuous, Format("Best",12))
<< New Column("Year11", Numeric, Continuous, Format("Best",12))
<< New Column("Year12", Numeric, Continuous, Format("Best",12))
<< New Column("Year13", Numeric, Continuous, Format("Best",12))
<< New Column("Year14", Numeric, Continuous, Format("Best",12))
<< New Column("Year15", Numeric, Continuous, Format("Best",12))
<< New Column("Year16", Numeric, Continuous, Format("Best",12))
<< New Column("Year17", Numeric, Continuous, Format("Best",12))
<< New Column("Year18", Numeric, Continuous, Format("Best",12))
<< New Column("Year19", Numeric, Continuous, Format("Best",12))
<< New Column("Yearn20", Numeric, Continuous, Format("Best",12))
<< New Column("Year21", Numeric, Continuous, Format("Best",12))
<< New Column("Year22", Numeric, Continuous, Format("Best",12))
<< New Column("Year23", Numeric, Continuous, Format("Best",12))
<< New Column("Year24", Numeric, Continuous, Format("Best",12))
<< New Column("Year25", Numeric, Continuous, Format("Best",12))
<< New Column("Year26", Numeric, Continuous, Format("Best",12))
<< New Column("Year27", Numeric, Continuous, Format("Best",12))
<< New Column("Year28", Numeric, Continuous, Format("Best",12))
<< New Column("Year29", Numeric, Continuous, Format("Best",12))
<< New Column("Year30", Numeric, Continuous, Format("Best",12));
// Iterate through the rows of :Test_Result (where the delimited string is stored)
for (i = 1, i <= nrows(dt), i++,
one_test_result_list = words(column(dt,"Test_Result"), "|");
for (k = 1, k <= nitems(one_test_result_list), k++,
// Put the values in the proper column at the proper row (i)
dt:Year1 = num(one_test_result_list[1]);
dt:Year2 = num(one_test_result_list[2]);
dt:Year3 = num(one_test_result_list[3]);
dt:Year4 = num(one_test_result_list[4]);
dt:Year5 = num(one_test_result_list[5]);
dt:Year6 = num(one_test_result_list[6]);
dt:Year7 = num(one_test_result_list[7]);
dt:Year8 = num(one_test_result_list[8]);
dt:Year9 = num(one_test_result_list[9]);
dt:Year10 = num(one_test_result_list[10]);
dt:Year11 = num(one_test_result_list[11]);
dt:Year12 = num(one_test_result_list[12]);
dt:Year13 = num(one_test_result_list[13]);
dt:Year14 = num(one_test_result_list[14]);
dt:Year15 = num(one_test_result_list[15]);
dt:Year16 = num(one_test_result_list[16]);
dt:Year17 = num(one_test_result_list[17]);
dt:Year18 = num(one_test_result_list[18]);
dt:Year19 = num(one_test_result_list[19]);
dt:Year20 = num(one_test_result_list[20]);
dt:Year21 = num(one_test_result_list[21]);
dt:Year22 = num(one_test_result_list[22]);
dt:Year23 = num(one_test_result_list[23]);
dt:Year24 = num(one_test_result_list[24]);
dt:Year25 = num(one_test_result_list[25]);
dt:Year26 = num(one_test_result_list[26]);
dt:Year27 = num(one_test_result_list[27]);
dt:Year28 = num(one_test_result_list[28]);
dt:Year29 = num(one_test_result_list[29]);
dt:Year30 = num(one_test_result_list[30]);
Continue();
);
);
어떤 도움 주셔서 감사합니다 !!
한 가지 방법은 모든 새 열의 이름을 목록에 넣는 것입니다 (세 가지 테스트의 경우 'testList = { "DDI1_TXP_0_SIU", "DDI1_TXP_1_SIU", "DDI1_TXP_2_SIU"};'). 그런 다음 inner ( 'k') 루프는 다음과 같아야합니다.
for (k = 1, k <= nitems(one_test_result_list), k++,
Column(dt, testList[) = num(one_test_result_list);
);
그러나이 논리에서는 측정 된 값이 '누락 된 것'이라고 가정합니다 (DDI1_TXP_0_SIU가 문자열에서 누락되어 있고 다른 두 가지가 누락 된 경우 나의 예에서는 할당이 올바르지 않음).