데이터 테이블의 가변성 차트에 사양 제한을 추가하려면안녕하세요,
내 JMP 버전은 10.0.2입니다. 필요한 작업으로 인해 수백 개의 매개변수를 분석해야 하고 각 매개변수에는 100개 이상의 데이터 포인트가 있습니다. 제 고객이 Excel에서 이러한 매개변수의 LSL, 대상 및 USL을 포함하는 다른 파일을 저에게 보냈습니다. 따라서 Variabiltiy 차트를 플로팅할 때 사양 제한을 해당 매개변수와 연결하는 스크립트/내장 도구가 있는지 궁금합니다(X축은 다른 배치 번호이고 Y축은 매개변수 데이터임). 또한 원시 데이터의 상자 그림을 표시하고 싶습니다. 현재 저는 많은 시간을 낭비하는 이 모든 작업을 수동으로 수행합니다. 따라서 해결책이 있는지 알려주세요(그렇다고 가정합니다).
기밀 사유로 인해 원시 데이터 파일을 표시할 수 없는 점을 양해해 주십시오. 미리 감사드립니다.
Re: 데이터 테이블의 가변성 차트에 사양 제한을 추가하려면Nelson에게 감사합니다. 이 스크립트는 제 경우에 사용할 수 있습니다. 여러분의 인내와 지원에 진심으로 감사드립니다!
Re: 데이터 테이블의 가변성 차트에 사양 제한을 추가하려면열 이름에는 JMP가 이름의 일부로 사용하는 대신 실행을 시도하는 문자가 포함됩니다.따라서 JMP가 전체 값을 이름으로 해석하도록 하려면 :Name() 함수를 추가해야 했습니다.아래 스크립트를 참조하십시오.
참고: dt = 및 dtLimits = 문은 이미 열린 데이터 테이블을 찾도록 변경되었습니다.open() 함수를 사용하도록 다시 변경해야 할 수도 있습니다.
// Open table to have limits set on
dt = data table("raw data");
dtLimits = data table("Spec limit");
// Get a list of all of the numeric columns in the measurment data table
colNames = dt << get column names( numeric, string );
// Loop across the Limits table and apply the findings to data table
For( i = 1, i <= N Rows( dtLimits ), i++,
// If a column in the measurement data table has the same name as the current
// Limits data table column "Parameter" has, then process the data
colNamesPosition = Loc( colNames, dtLimits:Parameter[i] );
If( N Rows(colNamesPosition) > 0,
Eval(
Substitute(
Expr(
__col__ << set property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
)
),
Expr( __col__ ), Parse( "dt:Name(\!"" || colNames[colNamesPosition[1]] || "\!")" ),
Expr( __LSL__ ), dtLimits:LSL[i],
Expr( __USL__ ), dtLimits:USL[i],
Expr( __Target__ ), dtLimits:Target[i]
)
)
);
);
// Run Variability Charts
Variability Chart( Y( :Name("TWNB_10/10$Vtlin%V"), :Name("TWNB_10/10$Idlin%uA/um") ), X( :wafer ) );Re: 데이터 테이블의 가변성 차트에 사양 제한을 추가하려면간소화된 원시 데이터 테이블과 사양 제한 테이블을 첨부했습니다. $가 포함된 내 매개변수의 명명 규칙에서 오류가 발생한 것 같습니다. 하지만 매개변수 이름은 변경할 수 없습니다. 확인 도와주세요. 정말 감사합니다.
Re: 데이터 테이블의 가변성 차트에 사양 제한을 추가하려면내가 제공한 스크립트는 Limits 데이터 테이블 열의 이름이 다음과 같다고 가정합니다.
Limits 데이터 테이블의 열 이름입니까?
제한 데이터 테이블과 측정 데이터 테이블의 사본을 첨부할 수 있습니까?이것은 문제의 디버깅을 용이하게 합니다.
Re: 데이터 테이블의 가변성 차트에 사양 제한을 추가하려면감사합니다 넬슨. 스크립트를 수정했는데 이번에는 "범위가 지정된 데이터 테이블 액세스에는 데이터 테이블 열 또는 변수가 필요합니다"라는 또 다른 오류가 표시되었습니다. 이것은 나를 다시 혼란스럽게 만듭니다. 이유를 알려주시겠어요?
Re: 데이터 테이블의 가변성 차트에 사양 제한을 추가하려면방금 내 코드에서 오류를 발견했습니다.코드의 줄을 변경하십시오
If( N Rows( ) > 0,
에게
If( N Rows( colNamesPosition ) > 0,
Re: 데이터 테이블의 가변성 차트에 사양 제한을 추가하려면원시 data.jmp의 매개변수는 spec limits.jmp에 있는 모든 매개변수의 일부일 뿐입니다. 그래서 이것이 이유가 될 수 있습니까?
저는 JSL을 처음 접하기 때문에 가능하다면 제 사례를 기반으로 다른 기능이 비슷한 일을 할 수 있는지 친절하게 알려주세요. 도와 주셔서 정말로 고맙습니다.
Re: 데이터 테이블의 가변성 차트에 사양 제한을 추가하려면문제는 Loc() 함수가 colNames{} 목록에서 일치 항목을 찾지 못한다는 것입니다. 이 함수는 정확히 일치해야 합니다. 대문자/소문자, 간격 등이 모두 문제를 일으킬 수 있습니다.Re: 데이터 테이블의 가변성 차트에 사양 제한을 추가하려면안녕 넬론,
나는 문제를 알고 있거나 적어도 내 생각과 당신의 대본 사이의 차이점을 알고 있다고 생각합니다. 전에 명확하게 설명하지 않은 것을 용서하십시오.
처음에는 원시 데이터를 붙여넣은 새 데이터 테이블을 만들었습니다. 이것이 현재 데이터 테이블이라고 가정합니다. 그래서 dt=현재 데이터 테이블()로 정의합니다. 그런 다음 저장된 Spec limits.jmp 파일을 엽니다.
dtLimits<SPAN class="token operator">=</SPAN><SPAN class="token function">Open</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"$Desktop\JMP\Spec limits.jmp"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
내가 게시 한 스크립트를 기반으로 작동하지 않는 것 같아요?
지금 하고 있는 일은 새 데이터 테이블을 원시 data.jmp로 저장하는 것입니다. 그런 다음 아래 스크립트를 사용하십시오. 그러나 여전히 매개변수에 사양 제한이 추가되지 않았습니다.
// Open table to have limits set on
dt = Open( "C:\Users\Desktop\JMP/raw data.jmp" );
// Open spec limit table
dtLimits = Open( "C:\Users\Desktop\JMP/Spec limits.jmp" );
// Get a list of all of the numeric columns in the measurement data table
colNames = dt << get column names( numeric, string );
// Loop across the Limits table and apply the findings to data table
For( i = 1, i <= N Rows( dtLimits ), i++,
// If a column in the measurement data table has the same name as the current
// Limits data table column "Parameter" has, then process the data
colNamesPosition = Loc( colNames, dtLimits:Parameter[i] );
If( N Rows() > 0,
Eval(
Substitute(
Expr(
__col__ << set property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
)
),
Expr( __col__ ), Parse( "dt:" || colNames[colNamesPosition[1]] ),
Expr( __LSL__ ), dtLimits:LSL[i],
Expr( __USL__ ), dtLimits:USL[i],
Expr( __Target__ ), dtLimits:Target[i]
)
)
);
);그래서 이 스크립트를 디버그하려고 했습니다. L22가 오류를 표시합니다. 잘못된 아래 첨자(숫자 또는 숫자 목록이어야 함). 이것이 귀하의 스크립트에서는 작동하지만 내 스크립트에서는 작동하지 않는 이유를 모르겠습니다. 아이디어가 있으시면 알려주세요. 감사합니다.
Expr( __col__ ), Parse( "dt:" || colNames[colNamesPosition[1]] ),
Re: 데이터 테이블의 가변성 차트에 사양 제한을 추가하려면진술:
dt=current data table();
이미 열린 데이터 테이블을 가리키도록 변수 "dt"를 설정합니다.따라서 측정 데이터 테이블이나 한계 테이블이 모두 열려 있지 않으면 다음을 사용해야 합니다.
dt=open("<PATH>/data table name");</PATH>
"현재 데이터 테이블()" 기능이 아닌 측정 데이터 테이블을 엽니다.
코드에 잘라서 붙여넣는 것이 아니라 제가 첫 번째 응답에서 제공한 JSL이 어떻게 작동하는지 이해하고 있는지 확인해야 합니다.내 예제에 사용된 모든 함수는 예제와 함께 스크립팅 인덱스에 문서화되어 있습니다.
도움말==>스크립팅 인덱스
Re: 데이터 테이블의 가변성 차트에 사양 제한을 추가하려면안녕 넬슨,
답장 해주셔서 매우 감사합니다. 샘플에서 두 개의 데이터 테이블을 만들었습니다. 하나는 Big Class.jmp이고 다른 하나는 사양 제한 테이블입니다. 그러나 제 경우에는 이미 이 두 개의 데이터 테이블이 존재했습니다. 따라서 저에게 남은 것은 두 테이블을 함께 연결하고 colNames = dt << get column names (numeric, string )에서 시작하는 스크립트에서 제공한 작업을 수행하는 것입니다. 나는 아래에서 시도했다 :
dt=current data table();
show (dt);
dtLimits=Open( "$Desktop\JMP\Spec limits.jmp" );
그리고 첨부
colNames = dt << get column names (numeric, string ).
그리고 그 후.아쉽게도 Spec limits.jmp만 열렸지만 사양 제한은 현재 데이터 테이블에 추가되지 않았습니다. 당신은 내가 더 버그를 도와 주시겠습니까? 정말 감사합니다.
Re: 데이터 테이블의 가변성 차트에 사양 제한을 추가하려면다음은 한계 데이터 테이블에서 값을 읽어 측정 데이터 테이블에 적용하는 샘플 스크립트입니다.그리고 가변성 차트 또는 대부분의 다른 플랫폼 차트에 사양 제한이 표시되는 경우.
// Open table to have limits set on
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Create a limits table for the example
dtLimits = New Table( "Limits",
Add Rows( 2 ),
New Column( "Parameter", Character, "Nominal", Set Values( {"height", "weight"} ) ),
New Column( "LSL", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [52, 60] ) ),
New Column( "Target", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [63, 105] ) ),
New Column( "USL", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [70, 180] ) )
);
// Get a list of all of the numeric columns in the measurment data table
colNames = dt << get column names( numeric, string );
// Loop across the Limits table and apply the findings to data table
For( i = 1, i <= N Rows( dtLimits ), i++,
// If a column in the measurement data table has the same name as the current
// Limits data table column "Parameter" has, then process the data
colNamesPosition = Loc( colNames, dtLimits:Parameter[i] );
If( N Rows() > 0,
Eval(
Substitute(
Expr(
__col__ << set property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
)
),
Expr( __col__ ), Parse( "dt:" || colNames[colNamesPosition[1]] ),
Expr( __LSL__ ), dtLimits:LSL[i],
Expr( __USL__ ), dtLimits:USL[i],
Expr( __Target__ ), dtLimits:Target[i]
)
)
);
);
// Run Variability Charts
Variability Chart( Y( :height, :weight ), X( :sex ) );