행을 담고 있는 객체를 다루는 방법을 이해하려고 합니다. 이 설명조차 틀릴 수 있습니다.
이 맥락에서 "FilteredRows"는 무엇입니까?
dt = Current Data Table();
FilteredRows = dt << get rows where( :Date == 12May2025 );
Show( N Rows( FilteredRows ) );
조금 더 자세히 설명하자면, 데이터 테이블의 모든 행에 객체를 설정하는 JSL 명령이 있나요? 아니면 전혀 필요하지 않은 건가요?
'모든 행 선택'을 피하는 가장 가까운 방법은 다음과 같습니다.
AllRows = dt << 1인 행을 가져옵니다.
하지만 부정행위 같은 느낌이 들죠.
더 중요한 것은 행의 하위 집합에 추가 필터를 적용할 수 있기를 원한다는 것입니다.
이것은 효과가 없지만 의도는 전달합니다.
XFilteredRows = dt << X == 42인 행을 가져옵니다.
XYFilteredRows = XFilteredRows << Y ==1.21인 행을 가져옵니다.
네, 두 가지 모두 한 줄로 할 수 있습니다.
XYFiteredRows = dt << X==42 & Y==1.21인 행을 가져옵니다.
하지만 저는 이것을 For Each Row 루프에서 사용할 계획입니다. 여기서 X는 행의 99%를 제거하고, 이후 XY와 만나는 행, XZ와 만나는 행, X와는 만나지만 Y와는 만나지 않는 행 등 더 많은 매개변수를 독립적으로 필터링해야 합니다.
큰 테이블에서는 X개의 필터링된 행을 유지하는 것이 더 빠를 것으로 생각합니다.
관련된 내용으로, 제가 얻고자 하는 결과 중 하나는 '그룹화 기준' 결과와 매우 유사하지만 사용자 지정 수식을 사용하고 있습니다.
열 수식의 JSL:
열 평균( :매개변수, :X )
'그룹화 기준'은 내장 함수에서 생성된 열 수식에 매우 편리하지만, 더 복잡한 계산을 할 때는 동일한 그룹화 효과를 얻는 방법을 모르겠습니다.
"컨테이너"는 (1차원) "행렬"입니다.
수동으로 매트릭스를 생성할 수도 있습니다.
myRows= 행렬({1,2,3})
내 행 = 1::3
내 행 = [1, 2, 3]
교차하는 방법은 2가지가 있습니다(합집합, 차집합과 같은 다른 집합 연산도 가능합니다)
a) 연관 배열 사용
aa1 = associative array (myRows1);
aa2 = associative array (myRows2);
aa1 << intersect(aa2);<BR />// aa1 << remove(aa2);
list of rows = aa1 << get keys;
rows= matrix(list of rows);

b) [JMP19의 새로운 기능]: 목록 사용
list1 = as list (myRows1);
list2 = as list (myRows2);
<STRIKE>
list of rows = set intersect(list1, list2);
</STRIKE>
list of rows = set intersection(list1, list2);
//list of rows = set difference(list1, list2);
rows= matrix(list of rows);

행렬의 교집합? 아마도: 아니겠죠
호기,
다시 한번 저를 구해주셨네요. 감사합니다!
한 가지 명확히 하자면, 나는 당신의 구문을 사용했습니다.
list of rows = set intersect(list1, list2);
처음에는 파란색으로 바뀌어서 괜찮다고 생각했는데, 대문자로 안 써서 이상했어요. 그러다가 스크립팅 가이드에서 찾아보니 "Set Intersection"이라는 걸 알게 됐어요. 이제 제대로 쓸 수 있겠네요. 건배!