안녕하세요,
다음과 같은 문제가 있습니다.
a) 여러 열이있는 테이블 (테이블 dt라고 함)을 생성하고 있습니다. 그러나 두 개의 다른 열 (예 : "LCOL", "WCOL")과 함께 col 이름의 특정 패턴 (예 : "ABC @ XYZ") 만보고 싶습니다. 나는 그 테이블을 생성하고있다. (그 테이블을 dtB라고 부름)
다음
b) dtB 테이블을 사용하고 해당 열을 가져오고 for 루프를 사용하여 Col Name의 패턴과 일치하는 각 열에 대한 요약 테이블을 생성합니다.
c) 빈 테이블 dt_sum_all을 만들었습니다.
d) 이제 내 목표는 패턴과 일치하는 열의 모든 요약 값을 LCOL 및 WCOL 열과 함께 하나의 테이블로 가져 오는 것입니다. (새 테이블을 사용하지 않으면 N 개의 열에 대해 N 개의 테이블이 있지만 그게 내가 원하는 것이 아닙니다- 나는 1 개의 테이블을 원한다 )
이자형 ) 또한 일단 단일 테이블이 생기면 마지막에 SUM ( ABC @ XYZ_1AS ) ~ ABC @ XYZ_1AS . 컬럼이 많기 때문에 루프 등으로하고 싶습니다.
지금까지 내가 가진 것은 다음과 같습니다.
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 = New Table();
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);
);
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 및 웨이퍼입니다. dtB 데이터 테이블을 제거했습니다. 나중에 스크립트에서 필요한 것이 아니라면 요약 데이터를 생성하기 위해 생성 할 필요가 없기 때문입니다. 요약 데이터는 원래 데이터 테이블에서 직접 가져올 수 있습니다. 또한 각 열을 한 번에 하나씩 요약 할 필요가 없습니다. 모든 열을 한 번에 쉽게 요약 할 수 있습니다. 따라서 Updatie를 실행할 필요가 없습니다. 마지막으로 요약 플랫폼에는 열 이름에 입력 열 이름과 동일한 이름을 지정할 수있는 옵션이 있으므로 요약 테이블에서 열 이름을 변경할 필요가 없습니다.
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" )
);