안녕하세요 여러분,
특정 기준에 따라 데이터 테이블에서 부분집합을 선택하는 스크립트를 작성하고 있습니다.
Example dt는 Error_ID라는 열을 가진 제 데이터 테이블입니다.
제가 입력한 내용은 다음과 같습니다: "dt_subset=dt< 이제 dt 데이터 테이블에 Error_ID==0 행이 없다고 가정해 보겠습니다. 그러면 dt_subset은 비어 있습니다.
저는 dt_subset이 dt 테이블과 동일한 열을 갖지만 행이 없는 새로운 데이터 테이블일 것이라고 예상했습니다. 그래야 "If( !Empty(dt_subset)...)" 조건을 확인했을 때 false가 반환되어 빈 dt_subset 테이블에 대한 작업을 계속하지 않게 됩니다.
하지만 dt_subset이 비어 있는지 확인하려고 하면 오류가 발생합니다.
제가 원하는 것은 선택 영역이 비어 있는지 확인하는 것입니다. 해결책이 있으신가요?
도와주셔서 감사합니다!
선택된 행이 있는지 여부만 확인하려면 << 선택된 행 가져오기 를 사용하면 됩니다.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Select Where(:age >= 20);
selrows = dt << Get Selected Rows;
If(N Items(selrows) == 0,
Throw("No rows selected");
);
이러한 필터링 후에도 빈 테이블이 필요한 경우, 일반적으로 다음과 같은 방법을 사용합니다.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
rows_of_interest = dt << Get Rows Where(:age >= 20);
If(N Items(rows_of_interest) > 0,
dt_subset = dt << Subset(Rows(rows_of_interest), Selected Columns(0), Output table("SUBSET"));
,
dt_subset = dt << Subset(Rows(1), Selected Columns(0), Output table("SUBSET"));
dt_subset << Delete Rows(1);
);
Show(N Rows(dt_subset)); // demo purposes
생성되지 않은 표에서 확인하고 싶으시다면
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt_subset = dt << Select Where(:age >= 20) << Subset(Selected Rows(1), Selected Columns(0), Output table("SUBSET"));
If(Is Empty(dt_subset),
Throw("No rows selected");
);
Write();