오프셋 사이트 1 데이터안녕,
참조 데이터 테이블 값을 기반으로 테스트 결과를 오프셋하는 jmp 스크립트가 있습니다.
다음 작업을 수행합니다.
1. 데이터 테이블 및 참조 데이터 테이블 읽기
2. 사이트 번호를 선택하는 새 창을 생성하고,
3. 사용자 입력(사이트 번호 1 또는 2)을 기반으로 해당 데이터를 참조 데이터 테이블 값에 정렬합니다.
웨이퍼 ID로 평균을 취하여 기본 데이터 테이블에 오프셋을 적용합니다.
스크립트는 다음과 같습니다. 예상한 출력을 생성하지 않습니다.
Names Default To Here( 1 );
dt1 = Data Table( "Reference data table" );
dt2 = Current Data Table();
For( i = 1, i <= N Rows( 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" );
For( c = 1, c <= N Col( dt2 ) - 1, c++,
theMatrix = [];
name = Column( Col_List1[c] ) << Get name;
If( Contains( Col_List1[c], "IL" ),
mean = .;
Try( mean = Column( dt2, col_list1[c] ) << get property( "theMean" ) );
// Don't process if a value for theMean does not exist
If( Is Missing( mean ) == 0,
For Each Row(
If( Contains(sitenum, dt2:SiteNumber), // Something needs to be changed here *****
r = Row();
//mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
//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: 오프셋 사이트 1 데이터이 문제를 처리하는 방법은 코드에 show 문을 넣어 올바른 결과를 얻지 못하는 시점을 결정하는 것입니다.예를 들어, 각각을 변환한 후 show(sitenum)를 넣습니다.이렇게 하면 논리의 진행 상황을 추적하고 어디에서 실패하는지 확인할 수 있습니다.또는 디버거 도구를 사용하여 동일한 작업을 수행할 수 있습니다.
Re: 오프셋 사이트 1 데이터@txnelson 조언해주시면 감사하겠습니다
Re: 오프셋 사이트 1 데이터Names Default To Here( 1 );
dt1 = Data Table( "Reference data table" );
dt2 = Current Data Table();
For( i = 1, i <= N Rows( dt1 ), i++,
theTest = dt1:Tests[i];
Try( Column( dt2, theTest ) << set property( "TheMean", dt1:mean[i] ) );
);
New Window( "",
modal,
ct = Check Box( {"1", "2"} ),
Button Box( "Ok", get = ct << Get Selected() )
);
sitenum = Transform Each( {str}, get, Num( str ) );
Col_List1 = dt2 << Get Column Names( "String" );
For( c = 1, c <= N Col( dt2 ) - 1, c++,
theMatrix = [];
name = Column( Col_List1[c] ) << Get name;
// The following code is never executed since none of the column names
// have the value "IL" in their name
If( Contains( Col_List1[c], "IL" ),
mean = .;
Try( mean = Column( dt2, col_list1[c] ) << get property( "theMean" ) );
// Don't process if a value for theMean does not exist
If( Is Missing( mean ) == 0,
For Each Row(
If( Contains( sitenum, dt2:SiteNumber ), // Something needs to be changed here *****
r = Row();
//mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
//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: 오프셋 사이트 1 데이터@txnelson 죄송합니다. 코드에 오타가 있었습니다.
올바른 설명은 다음과 같습니다.
// The following code is never executed since none of the column names
// have the value "IL" in their name
If( Contains( Col_List1[c], "Current" ),
Re: 오프셋 사이트 1 데이터Show() 함수를 사용하여 코드를 단계별로 실행하여 설정되는 값을 확인한 다음 논리가 잘못된 부분을 확인하거나 JMP 디버거를 사용하여 분석을 수행해야 합니다.
그것이 바로 나 또는 포럼의 다른 사람이 수행해야 하는 방법입니다.그리고 예상되는 출력을 이해할 수 있는 이점이 있습니다.
Re: 오프셋 사이트 1 데이터당신은 또한 사용할 수 있습니다 JMP 디버거 중단점을 사용하거나 코드를 단계별로 실행하여 변수를 검사하거나 관찰합니다.
Re: 오프셋 사이트 1 데이터더 나은 질문을 하는 방법과 스크립트를 디버그하는 방법을 배워야 합니다. 즉, 다음은 필요한 작업을 수행하는 작업 스크립트입니다.
Names Default To Here( 1 );
dt1 = Data Table( "Reference data table" );
dt2 = Current Data Table();
For( i = 1, i <= N Rows( dt1 ), i++,
theTest = dt1:Tests[i];
Try( Column( dt2, theTest ) << set property( "TheMean", dt1:mean[i] ) );
);
New Window( "",
modal,
ct = Check Box( {"1", "2"} ),
Button Box( "Ok", get = ct << Get Selected() )
);
sitenum = Transform Each( {str}, get, Num( str ) );
Col_List1 = dt2 << Get Column Names( "String" );
For( c = 1, c <= N Col( dt2 ) - 1, c++,
If( Contains( Col_List1[c], "Current" ),
mean = .;
Try( mean = Column( dt2, col_list1[c] ) << get property( "theMean" ) );
// Don't process if a value for theMean does not exist
If( !Is Missing( mean ),
For(k=1, k<= n items(sitenum), k++,
rows = dt2 << Select Where( :SiteNumber == sitenum[k] ) << Get Selected Rows;
dt2 << Clear Select();
NewValues = Column( dt2, c )[rows]+mean;
For(i=1, i<= n items(NewValues), i++,
Column( dt2, c )[rows[i]] = NewValues[i]
);
);
);
);
);