열린 테이블 수가 다른 경우 데이터 테이블 결합안녕하세요,
목록 상자에서 사용자가 선택한 항목을 가져오는 스크립트가 있습니다. 사용자가 선택한 항목 수에 따라 여러 개의 테이블이 나타납니다. 새 데이터 테이블의 수는 가변적이며 이를 모두 결합 테이블이라는 하나의 더 큰 테이블로 결합하고 싶습니다. 연결 함수가 이 작업을 수행한다는 것을 알고 있지만 사용자가 지정한 수의 테이블을 수용하도록 스크립트를 작성하고 싶습니다.
이 코드 조각에서 EachChem, EachChem 2, EachChem 3...ectc라는 이름의 여러 새 테이블이 나타납니다. 이를 결합 테이블(Combined Table)이라는 더 큰 테이블로 결합하고 싶습니다.
For (i = 1, i <= N Items(lt), i++,
dt << Select Where( :chemical == lt[i] );
dt << Get selected rows
dt << Subset(Output Table("EachChem"), Selected Rows(i));
);
대안으로, 위의 for 루프 내에서 테이블을 결합하여 EachChem이라는 하나의 큰 하위 집합 테이블로 끝날 수 있다면 그것도 좋을 것입니다.
도움이나 조언을 주시면 감사하겠습니다.
데이터 혼합 및 정리윈도우Re: 열린 테이블 수가 다른 경우 데이터 테이블 결합이것은 당신이 원하는 것을 할 것입니다
theExpr = "Data Table( \!"EachChem\!") << Concatenate(";
For( i = 2, i <= N Items( lt ), i++,
theExpr = theExpr || " Data Table( \!"EachChem " || Char( i ) || "\!"),"
);
theExpr = theExpr || "Output Table( \!"Combined Table\!" ) );";
Eval( Parse( theExpr ) );Re: 열린 테이블 수가 다를 경우 데이터 테이블 결합고맙습니다. 효과가 있었어요.
연결할 테이블의 이름도 변경되면 다음과 같이 하면 됩니다.
theExpr = " Data Table( \!"" || MaskList[1] || " " || Char( 2 ) || "\!") << Concatenate(";
For( i = 2, i <= N Items(MaskList), i++,
theExpr = theExpr || " Data Table( \!"" || MaskList[i] || " " || Char( 2 ) || "\!"),"
);
theExpr = theExpr || "Output Table( \!"Final Table\!" ) );";
Eval( Parse( theExpr ) );
위의 코드에서,
MaskList는 사용자에 따라 가변적인 개수의 마스크를 저장하는 리스트입니다. MaskList에는 각 마스크와 관련된 테이블이 있습니다.
예를 들어, 첫 번째 테이블의 이름은 Mask1 2 이고(두 번째 테이블의 이름은 Mask1이므로 2개 추가), 연결할 다음 테이블의 이름은 Mask9 2 입니다(두 번째 테이블의 이름은 Mask9이므로 2개 추가). 이런 식으로 계속됩니다.
이렇게 하면 Mask1 2 와 Mask9 2 등이 연결됩니다.
문서화 목적으로 여기에 올려둡니다.