두 jmp 파일에서 값 더하기/빼기안녕,
@txnelson @pmroz
JSL의 참조 값을 사용하여 데이터 세트를 오프셋하는 데 도움이 필요합니다.
첫 번째 테이블에는 참조 값이 포함되어 있습니다.

두 번째 표에는 스트립 테스트 측정값이 포함되어 있습니다.

참조 데이터 테이블에서 스트립 A의 평균을 뺀 다음 데이터 세트에 추가하고 싶습니다.
예를 들어 :
1 단계. 전류 = (10+3)/2 = 6.5에 대한 스트립 A의 평균값. 따라서 400 - 6.5 = 393.5이고 다른 스트립의 경우에도 마찬가지입니다.
2 단계. 스트립 A >> 393.2 + 10 = 403.2의 두 번째 데이터 테이블에 393.5를 추가하고 다른 스트립에도 마찬가지로 추가합니다.
최종 테이블에는 다음 값이 있어야 합니다.

자세한 내용은 첨부파일을 참조하세요.
도와주셔서 감사합니다!
내가 시도한 것은 다음과 같습니다.
Names Default To Here( 1 );
dt = Current data table();
dtOffset = Open(Limits);
colList = dt << get column names(string);
For( i = 1, i <= N Items( colList ), i++,
theRow = dtOffset << get rows where( dtOffset:Tests == colList[i] );
show(i,nrows(therow));
If( N Rows( theRow ) == 1,
offset = dtOffset:Offset[theRow[1]];
For( k = 1, k <= N Rows( dt ), k++,
Column( dt, i )[k] = Column( dt, i )[k] + offset
);
);
);
품질 및 프로세스 엔지니어링Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.@txnelson
무슨 일이 일어나고 있는지 알아낼 수 있어?
Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.@txnelson
아래는 내가 기대하는 결과가 부족한 화면입니다. 최종 결과 데이터 테이블을 첨부했습니다
단계는 다음과 같습니다.
1. 데이터 테이블 및 참조 데이터 테이블 읽기
2. 사이트 번호를 선택하는 새 창을 생성하고,
3. 사용자 입력(사이트 번호 1 또는 2)에 따라 해당 데이터를 참조 데이터 테이블 값에 정렬합니다.
웨이퍼 ID를 평균하여 메인 데이터 테이블에 오프셋을 적용합니다.

Names Default To Here( 1 );
Clear globals();
Clear log();
dt1 = Data table( "Reference data table" );
dt2 = Current data table(); /// Select Data table.jmp
For(i=1,i<=nrows(dt1),i++,
theTest = dt1:Tests[i];
try(column(dt2,theTest) << set property("TheMean", dt1:Mean[i]));
);
New window( "", modal,
ct = checkbox({"1","2"}),
Buttonbox ("Ok",
get = ct << Get Selected ();
)
);
sitenum = Transform Each({str}, get, Num(str));
Col_List1 = dt2 << Get Column Names( "String" );
//if (!contains(Col_List1, "SiteNumber"),
// dt2 <<NEW column=""></NEW> r = dt2 << get rows where(dt2:sitenumber == sitenum[1]); /// something needs to change here ****&&&**&&&&**&&&
//mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
mean = column(dt2, Col_list1[c]) << get property("theMean");
//measure = mean - Col Mean( If( dt2:Strips == dt2:Strips[r], Column( dt2, c ), . ) );
measure = mean - Col Mean(as Column( dt2, c ),:Wafer ID);
theMatrix = theMatrix || Column( dt2, c )[r] + measure;
);
Column( dt2, c ) << Set Values( theMatrix );
););
Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.귀하의 코드는 나에게 혼란 스럽습니다.너가 가질 때
각 행에 대해
데이터 테이블 내의 각 개별 행이 처리됩니다.
Get Row Where()를 사용하면 데이터를 한 번만 전달합니다.기대하는 결과의 샘플을 제공해 주실 수 있나요?
Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.짐에게 조언 좀 주실 수 있나요?
Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.감사해요, @txnelson
각 행 구문을 사용했지만 루프를 완료하는 데 40분이 걸립니다. 다른 방법이 있나요?
For( c = 1, c <= N Col( dt2 ) -1, c++,
theMatrix = [];
name = Column( Col_List1[c] ) << Get name;
if (Contains( Col_List1[c], "Current"),
//For( r = 1, r <= N Rows( dt2 ), r++,
For Each Row(
<BR /> r = dt2 << get rows where(dt2:sitenumber == sitenum[1]);
//mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
mean = column(dt2, Col_list1[c]) << get property("theMean");
//measure = mean - Col Mean( If( dt2:Strips == dt2:Strips[r], Column( dt2, c ), . ) );
measure = mean - Col Mean(as Column( dt2, c ),:Wafer ID);
theMatrix = theMatrix || Column( dt2, c )[r] + measure;
);
Column( dt2, c ) << Set Values( theMatrix );
););Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다."측정값" 계산을 계산할 수 없습니다.데이터 테이블을 통해 루핑한다고 가정하는 JSL 라인을 작성했지만 행을 통한 루핑은 발생하지 않습니다.
Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.@txnelson
사과하다! 잘못된 파일을 첨부했습니다. 다음은 업데이트된 데이터 테이블입니다.
시도했지만 결과가 정확하지 않습니다.
Names Default To Here( 1 );
Clear globals();
Clear log();
dt1 = Data table( "Reference data table" );
dt2 = Current data table(); /// Select Data table.jmp
For(i=1,i<=nrows(dt1),i++,
theTest = dt1:Tests[i];
try(column(dt2,theTest) << set property("TheMean", dt1:Mean[i]));
);
New window( "", modal,
ct = checkbox({"1","2"}),
Buttonbox ("Ok",
ft = ct << Get Selected Indices();
), ct << set all(1);
);
sitenum = {};
Insert Into (sitenum, ft);
Col_List1 = dt2 << Get Column Names( "String" );
//if (!contains(Col_List1, "SiteNumber"),
// dt2 <<NEW column=""></NEW>
Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.스크립트를 잠깐 살펴보면 몇 가지 항목이 나타납니다.
- 참조 데이터 테이블에는 데이터 테이블의 열 이름과 일치하는 테스트 이름이 포함되어 있지 않습니다.
- Get Rows Where()는 작동하지 않습니다.사이트 번호와 일치하는 모든 행을 찾으려고 하시나요?그렇다면 그래야지
r = dt2 << get rows where(dt2:sitenumber == sitenum[1]);
Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.안녕하세요 짐 @txnelson ,
빠른 질문:
jsl 스크립트를 수정했고 확인란 선택에 따라 행을 필터링하고 싶습니다.
아래 스크립트는 새 창을 생성하고 사용자에게 사이트 번호 확인란을 선택하도록 요청합니다.
SiteNumber 선택에 평균 오프셋만 추가하고 싶습니다.
SiteNumber 1을 선택한 경우 해당 행만 정렬합니다. 두 파일을 모두 첨부했어요
get 행을 사용해 보았으나 결과가 정확하지 않은 것 같습니다. 몇 가지 제안을 찾고 있습니다.
Names Default To Here( 1 );
Clear globals();
Clear log();
dt1 = Data table( "Reference data table" );
dt2 = Current data table(); /// Select Data table.jmp
For(i=1,i<=nrows(dt1),i++,
theTest = dt1:Tests[i];
try(column(dt2,theTest) << set property("TheMean", dt1:Mean[i]));
);
New window( "", modal,
ct = checkbox({"1","2"}),
Buttonbox ("Ok",
ft = ct << Get Selected Indices();
), ct << set all(1);
);
sitenum = {2};
//Insert Into (sitenum, ft);
Col_List1 = dt2 << Get Column Names( "String" );
//if (!contains(Col_List1, "SiteNumber"),
// dt2 <<NEW column=""></NEW>
Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.고마워요 짐 
Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.나는 논리 문제가 아닌 구문 문제를 기반으로 Mark의 코드를 변경하고 있었습니다.코드를 재작업했는데 이것이 효과가 있을 것이라고 믿습니다.
Names Default To Here( 1 );
dt1 = open( "Reference data.jmp" );
dt2 = open( "Data set.jmp" );
For( c = 1, c <= N Col( dt2 ) -1, c++,
theMatrix = [];
name = Column( dt2, c ) << Get Name;
For( r = 1, r <= N Rows( dt2 ), r++,
mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
measure = mean - Col Mean( If( dt2:Strips == dt2:Strips[r], Column( dt2, c ), . ) );
theMatrix = theMatrix || Column( dt2, c )[r] + measure;
);
Column( dt2, c ) << Set Values( theMatrix );
);
Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.안녕 짐,
수정해 주셔서 감사합니다. 하지만 역시 작동하지 않는 것 같습니다.

Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.당신은 잘못 배치된 "("였습니다.수정된 버전은 다음과 같습니다
Names Default To Here( 1 );
dt1 = Open( "Reference data.jmp" );
dt2 = Open( "Data set.jmp" );
For( c = 1, c <= N Col( dt2 ), c++,
name = Column( dt2, c ) << Get Name;
mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
measure = mean - Column( dt2, c ) << Get As Matrix;
Column( dt2, c ) << Set Values( measure );
);
Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.고마워요 마크. 코드가 작동하지 않는 것 같습니다.

Re: 두 개의 jmp 파일에서 값을 더하거나 뺍니다.다음 예를 시도해 보세요.
Names Default to Here( 1 );
dt1 = Open( "Reference data.jmp" );
dt2 = Open( "Data set.jmp" );
For( c = 1, c <= N Col( dt2 ), c++,
name = Column( dt2, c ) << Get Name;
mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
measure = mean - (Column dt2, c ) << Get As Matrix);
Column( dt2, c) << Set Values( measure );
);