안녕,
다음과 같은 문제가 있습니다.
a) 여러 열이 있는 테이블(테이블 dt라고 함)을 생성 중입니다. 그러나 나는 두 개의 다른 열(예: "LCOL", "WCOL")과 함께 열 이름의 특정 패턴(예: "ABC@XYZ")만 살펴보는 데 관심이 있습니다. 나는 그 테이블을 생성하고 있습니다. (해당 테이블을 dtB라고 부름)
다음
b) dtB 테이블을 사용하고 해당 열을 가져온 다음 for 루프를 사용하여 Col Name의 패턴과 일치하는 각 열에 대한 요약 테이블을 생성합니다.
c) 빈 테이블 목록 dt_sum_all을 만들었습니다.
d) 이제 내 목표는 패턴과 일치하는 열의 모든 요약 값을 LCOL 및 WCOL 열과 함께 하나의 테이블로 얻는 것입니다. (새 테이블을 사용하지 않는 경우 N개의 열에 대해 N개의 테이블을 얻고 있지만 이는 내가 원하는 것이 아닙니다. 1개의 테이블이 필요합니다 .)
e) 또한 단일 테이블이 있으면 마지막에 SUM( ABC@XYZ_1AS )을 ABC@XYZ_1AS 처럼 Cols의 이름을 바꾸고 싶습니다(일반적으로 각 열의 시작 부분에 SUM을 추가합니다). 열이 많기 때문에 루프 등으로 수행하고 싶습니다.
내가 지금까지 가지고 있는 것은 다음과 같습니다.
dt = currentdatatable();
Wait(1);
colsd = dt << get column names( string );
pattern = "ABC@XYZ";
nd = N Items( colsd );
selCols = {"LCOL", "WCOL"};
For( i = 1, i <= nd, i++,
If( Contains( colsd[i], pattern ),
Insert Into( selCols, colsd[i] )
)
);
dtB = dt << Subset(
All rows,
Columns(selCols)
);
colNameList= dtB << get column names( string );
Wait(1);
dt_sum_all = {};
For( i = 1, i <= N Items( colNameList ), i++,
If( Contains( colNameList[i], pattern),
dt_sum = dtB << Summary(
Group( :LCOL, :WCOL ),
Sum(colNameList[i]),
Freq( "None" ),
Weight( "None" ),
) << show window(0);
);
Insert Into(dt_sum_all, dt_sum);
//Data Table (dt_sum_all) << Update (
///With(Data Table(dt_sum)),
//Match Columns(:LCOL = :LCOL, :WCOL=:WCOL)
);
////column(dt_sum, "SUM("||colNameList[i] || ")" ) << set name(colNameList[i]);
///);위의 코드는 작동하지 않으며 하나의 병합/업데이트 대신 각 열에 대해 여러 테이블을 가져옵니다. 그래서 테이블 하나를 얻지 못했습니다. 누구든지 도와주세요. 감사해요.
코드를 올바르게 읽고 있다면 원본 데이터 테이블의 패턴과 일치하는 열 집합에 대한 요약 데이터의 데이터 테이블로 끝내고자 합니다.
생각보다 많이 노력하셨다고 생각합니다.아래는 대부분의 코드를 사용하지만 반도체 기능 샘플 데이터 테이블에서 작업하는 예제 스크립트입니다. 여기서 로트 및 웨이퍼 열의 이름은 Lcol 및 Wcol이 아니라 lot_id 및 wafer입니다.dtB 데이터 테이블을 제거했습니다. 스크립트에서 나중에 필요하지 않는 한 요약 데이터를 생성하기 위해 생성할 필요가 없기 때문입니다.요약 데이터는 원래 데이터 테이블에서 직접 가져올 수 있습니다.또한 각 열을 한 번에 하나씩 요약할 필요가 없습니다.모든 열을 한 번에 쉽게 요약할 수 있습니다.따라서 업데이트를 실행할 필요가 없습니다.마지막으로 요약 플랫폼에는 입력 열 이름과 동일한 이름으로 열 이름을 지정할 수 있는 옵션이 있으므로 요약 테이블의 열 이름을 변경할 필요가 없습니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
Wait( 0 );
colsd = dt << get column names( string );
pattern = "PNP";
nd = N Items( colsd );
selCols = {"lot_id", "wafer"};
For( i = 1, i <= nd, i++,
If( Contains( colsd[i], pattern ),
Insert Into( selCols, colsd[i] )
)
);
dt_sum = dt << Summary(
Group( :lot_id, :wafer ),
Sum( colNameList[Index( 3, N Items( colNameList ) )] ),
Freq( "None" ),
Weight( "None" ),
link to original data table( 0 ),
statistics column name format( "column" )
);