A와 B라는 두 개의 서로 다른 데이터 테이블이 있습니다. 각 데이터 테이블에서 한 열에 비슷한 변수가 있습니다.
별도의 For 루프를 사용하여 비슷한 변수를 가진 열별로 각 데이터 테이블 A와 B에서 하위 집합을 만들어 테이블 보고서를 만들고 하나의 새 창에 추가합니다.
하위 집합 데이터 테이블 A에서 생성된 모든 테이블 보고서가 새 창에 추가되고, 그 뒤에 하위 집합 데이터 테이블 B에서 생성된 모든 테이블 보고서가 추가되는 것을 알 수 있습니다.
제가 원하는 것은 하위 집합 데이터 테이블 A에서 하나의 테이블 보고서를 추가한 다음, 각 변수 수준에 대해 하위 집합 데이터 테이블 B에서 테이블 보고서를 추가하는 것입니다.
코드는 어떻게 작성해야 하나요?
이를 설명하기 위해 Big Class와 Big Class Families 데이터 세트를 예로 들어보겠습니다.
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
vb = V List Box();
listdt1 = {};
listdt2 = {};
coldt1 = Column (dt1, "age");
coldt2 = Column (dt2, "age");
colleveldt1 = Associative Array(coldt1) << Get Keys;
colleveldt2 = Associative Array(coldt1) << Get Keys;
For (i=1, i <=N Items(colleveldt1), i++,
dt1row = dt1 << Get Rows Where(:age == colleveldt1[i]);
listdt1[i] = dt1 << Subset(Rows(dt1row));
tb = listdt1[i]<< Get As Report;
vb << Append (Table Box(tb));
);
For (i=1, i <=N Items(colleveldt2), i++,
dt2row = dt2 << Get Rows Where(:age == colleveldt2[i]);
listdt2[i] = dt2 << Subset(Rows(dt2row));
tb = listdt2[i]<< Get As Report;
vb << Append (Table Box(tb));
);
New Window("Report", vb);
JSL의 간단한 이동으로 원하는 것을 얻을 수 있습니다.
Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
vb = V List Box();
listdt1 = {};
listdt2 = {};
coldt1 = Column (dt1, "age");
coldt2 = Column (dt2, "age");
colleveldt1 = Associative Array(coldt1) << Get Keys;
colleveldt2 = Associative Array(coldt1) << Get Keys;
For (i=1, i <=N Items(colleveldt1), i++,
dt1row = dt1 << Get Rows Where(:age == colleveldt1[i]);
listdt1[i] = dt1 << Subset(Rows(dt1row),invisible);
tb = listdt1[i]<< Get As Report;
vb << Append (Table Box(tb));
dt2row = dt2 << Get Rows Where(:age == colleveldt2[i]);
listdt2[i] = dt2 << Subset(Rows(dt2row),invisible);
tb = listdt2[i]<< Get As Report;
vb << Append (Table Box(tb));
);
New Window("Report", vb);