계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달계산된 통계로 여러 차트를 생성합니다. 계산된 특정 통계 매개변수(예: 최소값, 중앙값 및 최대값)를 전달하고 싶습니다. 분위수 및 표준 편차 요약 통계 JSL을 사용하여 저장된 데이터 테이블의 특정 좌표로.
예를 들어 전달하고 싶습니다.
- 행 5, 열 7에 대한 최소 분위수
- 행 5, 열 8의 중앙값
- 행 5, 열 9에 대한 최대 Quantile
- Std Dev에서 행 5 열 10.
내 저장된 데이터 테이블에. JSL을 사용하여 이것을 달성하는 방법은 무엇입니까?
(시작할 저장된 데이터 테이블에서 좌표가 비어 있음)
데이터 테이블제도법스크립팅Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.감사. 작동합니다. Matlab 및 C#에서 온 저는 여전히 JSL 사고 방식에 익숙해지고 있습니다.
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.코드를 주의 깊게 살펴보십시오. include 함수의 반환 값을 resultsdt에 할당합니다. 반환된 값은 "H"로 평가되는 포함된 파일에 의해 수행된 마지막 작업입니다. 데이터 테이블이 아닙니다.
편집하다:
(1) basicTable.jsl에 마지막 줄을 추가합니다.
resultsdt;
또는 (2) 다음과 같이 포함을 변경하십시오(주석 추가).
/*resultsdt =*/ include ("basicTable.jsl");
나는 (1)이 당신이 기대하는 것에 더 가깝다고 생각합니다. 마지막으로 평가된 것이 데이터 테이블을 보유하는 변수인지 확인한 다음 include()의 결과로 반환됩니다.
(2) 또한 로컬 동작과 동일한 변수 이름을 사용하여 작동할 수도 있습니다. 나는 당신이 모든 곳에서 namesDefaultToHere를 사용하는지 그리고 resultsdt가 이미 존재하는지 여부에 따라 약간 예측할 수 없을 것이라고 생각합니다. 테스트 없이는 어떻게 작동하는지 확실하지 않습니다.
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.진술
Column(resultsdt, "Column 1")[8] ="H";
매개변수 이름만 전달 시간 열 1의 8번째 행에. 다른 정의 방법 결과
Names Default To Here (1);
// set up a table to accept the results
resultsdt = New Table( "Results Table",
Add Rows( 8),
New Column( "Column 1" ),
New Column( "Column 2" ),
New Column( "Column 3" ),
New Column( "Column 4" ),
New Column( "Column 5" ),
New Column( "Column 6" ),
New Column( "Min", Numeric ),
New Column( "Median", Numeric ),
New Column( "Max", Numeric ),
New Column( "SD", Numeric )
);
resultsdt:Column 1[1] ="A";
resultsdt:Column 1[2] ="B";
resultsdt:Column 1[3] ="C";
resultsdt:Column 1[4] ="D";
resultsdt:Column 1[5] ="E";
resultsdt:Column 1[6] ="F";
resultsdt:Column 1[7] ="G";
resultsdt:Column 1[8] ="H";
또한 사용할 때 작동하지 않습니다
resultsdt = include ("basicTable.jsl");
그러나 열 1을 비워두면 코드가 정상적으로 실행됩니다. 이 문제를 해결하는 데 도움이 될 것입니다.
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.
resultsdt = include ("basicTable.jsl");
해당 파일이 표시되는 경우 문제는 resultsdt가 데이터 테이블이 아니라 (어쩌면?) 이것이 무엇으로 평가되는지입니다.
Column(resultsdt, "Column 1")[8] ="H";
"H"일 수 있습니다. include 함수의 결과는 마지막으로 평가된 것입니다. (당신의 메모와 일치합니다.)
예, 오류 메시지가 원하는 만큼 도움이 되지 않았습니다. @Audrey_Shull - 오른쪽이 아니라 =의 왼쪽을 가리켜야 합니다.
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.감사 @Craige_Hales . 이제 문제를 조금 더 잘 이해합니다. 그러나 여전히 결함이 있습니다. 다음은 의도한 대로 작동합니다.
Names Default To Here (1);
delete symbols ();
clear log ();
// set up a table to accept the results
resultsdt = New Table( "Results Table",
Add Rows( 8),
New Column( "Column 1" ),
New Column( "Column 2" ),
New Column( "Column 3" ),
New Column( "Column 4" ),
New Column( "Column 5" ),
New Column( "Column 6" ),
New Column( "Min", Numeric ),
New Column( "Median", Numeric ),
New Column( "Max", Numeric ),
New Column( "SD", Numeric )
);
Column(resultsdt, "Column 1")[1] = "A";
Column(resultsdt, "Column 1")[2] = "B";
Column(resultsdt, "Column 1")[3] = "C";
Column(resultsdt, "Column 1")[4] = "D";
Column(resultsdt, "Column 1")[5] = "E";
Column(resultsdt, "Column 1")[6] = "F";
Column(resultsdt, "Column 1")[7] = "G";
Column(resultsdt, "Column 1")[8] ="H";
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
getDistChart = Function({ColName, _LSL, _USL}, {distChart},
New Window(""||ColName||" distribution",
distChart = dt << Distribution(
Stack( 1 ),
Continuous Distribution(
Column(As Column (ColName) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Capability Analysis( LSL(_LSL ), USL(_USL) )
),
SendToReport(
Dispatch(
{},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 1 ), {Font( "Segoe UI", 7, "Plain" )} ),
DispatchSeg( LabelSeg( 2 ), {Font( "Segoe UI", 7, "Plain" )} )}
)
)
);
);
return(distChart);
);
dist = getDistChart ("weight", 55, 185);
toPass= Report( dist )[Outline Box("weight" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box(1)]<< get (1);
//resultsdt = include ("basicTable.jsl");
resultsdt[1, 2] = toPass;
//show (toPass);
그러나 내가 정의하면 결과 아래와 같이 별도로
Names Default To Here (1);
// set up a table to accept the results
resultsdt = New Table( "Results Table",
Add Rows( 8),
New Column( "Column 1" ),
New Column( "Column 2" ),
New Column( "Column 3" ),
New Column( "Column 4" ),
New Column( "Column 5" ),
New Column( "Column 6" ),
New Column( "Min", Numeric ),
New Column( "Median", Numeric ),
New Column( "Max", Numeric ),
New Column( "SD", Numeric )
);
Column(resultsdt, "Column 1")[1] = "A";
Column(resultsdt, "Column 1")[2] = "B";
Column(resultsdt, "Column 1")[3] = "C";
Column(resultsdt, "Column 1")[4] = "D";
Column(resultsdt, "Column 1")[5] = "E";
Column(resultsdt, "Column 1")[6] = "F";
Column(resultsdt, "Column 1")[7] = "G";
Column(resultsdt, "Column 1")[8] ="H";
그런 다음 아래와 같이 호출하십시오 (실제 코드 설정 방법)
Names Default To Here (1);
delete symbols ();
clear log ();
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
getDistChart = Function({ColName, _LSL, _USL}, {distChart},
New Window(""||ColName||" distribution",
distChart = dt << Distribution(
Stack( 1 ),
Continuous Distribution(
Column(As Column (ColName) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Capability Analysis( LSL(_LSL ), USL(_USL) )
),
SendToReport(
Dispatch(
{},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 1 ), {Font( "Segoe UI", 7, "Plain" )} ),
DispatchSeg( LabelSeg( 2 ), {Font( "Segoe UI", 7, "Plain" )} )}
)
)
);
);
return(distChart);
);
dist = getDistChart ("weight", 55, 185);
toPass= Report( dist )[Outline Box("weight" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box(1)]<< get (1);
resultsdt = include ("basicTable.jsl");
resultsdt[1, 2] = toPass;
//show (toPass);
오류가 발생했습니다.
Not subscriptable value{8} in access or evaluation of 'Assign' , resultsdt[1, 2] = /*###*/toPass/*###*/
내가 어디로 잘못 가고 있습니까?
(열 1의 항목을 전혀 정의하지 않으면 위의 두 가지 접근 방식이 모두 잘 작동합니다.)
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.2 문제, 반환되는 로컬 변수에는 아무 것도 할당되지 않으며 데이터 테이블을 사용자 함수에 전달해야 합니다. 이 같은
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
getDistChart = Function( {dt, ColName, _LSL, _USL},
{distChart},
New Window( "" || ColName || " distribution",
distChart = dt << Distribution(
Stack( 1 ),
Continuous Distribution(
Column( As Column( ColName ) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Capability Analysis( LSL( _LSL ), USL( _USL ) )
),
SendToReport(
Dispatch(
{},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 1 ), {Font( "Segoe UI", 7, "Plain" )} ),
DispatchSeg( LabelSeg( 2 ), {Font( "Segoe UI", 7, "Plain" )} )}
)
)
)
);
Return( distChart );
);
dist = getDistChart( dt, "weight", 55, 185 );
JMP에서 << 연산자는 보내다 교환원에게 메시지(오른쪽)를 보냅니다. 스크립팅 가능한 객체 , 왼쪽에. 데이터 테이블(dt)은 스크립트 가능한 개체이지만 메시지에 대해 알지 못합니다. getDistChart . 다음과 같은 내장 플랫폼에 대해 알고 있습니다. 분포 . 스크립팅 인덱스는 데이터 테이블의 모든 메시지 이름을 보여줍니다.
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.@ron_horne . 다음은 내 실제 문제와 매우 유사하므로 좀 더 정리하는 데 도움이 될 것입니다. 함수를 통해 분포도를 얻습니다.
Names Default To Here (1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
getDistChart = Function({ColName, _LSL, _USL}, {distChart},
New Window(""||ColName||" distribution",
Distribution(
Stack( 1 ),
Continuous Distribution(
Column(As Column (ColName) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Capability Analysis( LSL(_LSL ), USL(_USL) )
),
SendToReport(
Dispatch(
{},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 1 ), {Font( "Segoe UI", 7, "Plain" )} ),
DispatchSeg( LabelSeg( 2 ), {Font( "Segoe UI", 7, "Plain" )} )}
)
)
);
);
return(distChart);
);
dist = dt << getDistChart ("weight", 55, 185);
나에게 분포가 처음부터 플로팅되지 않기 때문에 마지막 줄이 분포에서 값을 추출하기 위해 수행해야 할 작업을 수행하지 않는 것으로 보입니다. 이제 문제는 위의 광산과 같은 함수를 통해 분포를 그릴 때 계산된 통계 값을 얻는 방법입니다. 아마도 함수는 메시지가 아니므로 <<를 사용하여 객체로 보낼 수 없습니까?
아직 JMP를 배우는 중이므로 어떤 도움이라도 매우 유용할 것입니다.
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.다시 한 번 감사드립니다 @ron_horne , 하지만 둘 다 작동하지 않고 동일한 오류가 발생합니다.
다음이 올바르고 유효한 사용법이라고 말하는 건가요? 참고하세요 플로팅하지 않음 아래와 같이 사용하면 분포 (btw 나는 기능을 이해하지 못합니다 거리 안에 거리=dt ?)
Output = Report( dist = dt << getDistribution("ColName", "LSL", "USL", "other input parameters") );
및 오류(로그에서 복사)
Send Expects Scriptable Object{8} in access or evaluation of 'Send' , Output[Outline Box( "height" ), Outline Box( "Quantiles" ),
Table Box( 1 ), Number Col Box( 1 )] << /*###*/get( 1 ) /*###*/Not subscriptable value{8} in access or evaluation of 'Assign' , resultsdt[5, 9] = /*###*/Output[Outline Box( "Pass Distribution" ),
Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << /*###*/get( 1 ) /*###*/
/*###*/
내가 받고 있는 것은 내 다음 진술 때문입니다(아래에서 귀하의 제안이 있는 경우에도)
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1)] << get( 1 ); // max
그렇다면 간단한 테스트를 수행하고 좀 더 간단한 것을 resultsdt에 전달하고 싶습니다. 내가 무엇이든 얻을 수 있는지 테스트하기 위해 할 수 있는 간단한 테스트가 있습니까? 산출 데이터 테이블에 결과 ?
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.안녕 @네오 ,
문제를 올바르게 이해했다면 번호와 주소에 주의를 기울여야 합니다. 개요 상자의 이름을 사용하면 테이블 상자 및 번호 열 상자의 번호 매기기가 1부터 시작됩니다.
따라서 다음을 시도하십시오.
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1)] << get( 1 ); // max
Number Col Box(11)를 사용하려면 다음을 시도하십시오.
resultsdt[5, 9] = Output[Number Col Box( 11)] << get( 1 ); // max
이것이 이제 작동하기를 바랍니다.
일반적으로 이 링크에서와 같이 xpath() 또는 패턴 일치를 사용하여 관심 있는 값의 위치를 찾기 위해 스크립트를 가져오는 더 멋진 방법이 있습니다. http://www.pega-analytics.co.uk/blog/oneway-advisor-step-3/
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.감사 @ron_horne . 내가하려는 일에 대한 개요를 제공하려고합니다. 내 기본 스크립트에는 다음과 같은 흐름이 있습니다(여기서는 단순화됨).
데이터 테이블을 열고 호출 dt ), 그런 다음 함수를 사용하여 여러 열에 대한 분포도를 그립니다.
getDistribution ("ColName", "LSL", "USL", "other input parameters")
각 결과 분포도에는 "사분위수", "요약 통계" 및 "공정 능력 분석(개요가 닫힌 상태)"이 있습니다.
메인 스크립트의 다음 부분은 테이블을 생성하는 것입니다. 결과 ) 원래 게시물에 표시된 대로 계산된 통계 값을 전달해야 하는 여러 행과 열이 있습니다.
그러나 다음은 작동하지 않습니다.
output = Report( dist = dt << getDistribution("ColName", "LSL", "USL", "other input parameters") );
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 6 ), Number Col Box( 11)] << get( 1 ); // max
Table Box()와 Number Col Box()의 숫자가 맞는지 확인했습니다. 다음과 같은 오류가 발생합니다
Send Expects Scriptable Object{8} in access or evaluation of 'Send' , output[Outline Box( "height" ), Outline Box( "Quantiles" ),
Table Box( 6 ), Number Col Box( 11 )] << /*###*/get( 1 ) /*###*/
내가 어디로 잘못 가고 있습니까?
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.안녕 네오,
distb에 대한 참조가 작동하지 않습니다. 사인 distb는 보고서 계층이 아닙니다. 분석 계층입니다. JMP에서는 이들 사이에 차이가 있습니다.
출력에서 무언가를 추출하려면 보고서 레이어를 명시적으로 참조해야 합니다.
이것 좀 봐: 분석에서 보고서로 통계 추출 출력이 여러 개인 경우 목표로 하는 값을 얻고 있는지 확인하기 위해 올바르게 이름을 지정하고 정의해야 합니다.
작동하는지 알려주세요. 그렇지 않으면 문제를 일으키는 지점에서 일부 파일과 스크립트를 제공하는 것을 고려하십시오.
모두 제일 좋다,
론
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.@ron_horne . 감사. 내가 가질 수 있도록 다시 코딩하는 데 약간의 시간이 걸렸습니다. 계산된 통계의 값에 대해 열려 있는 "결과 테이블"이 전달될 수 있습니다.
나는 당신의 제안으로 시작했고 신에게 질문이 있습니다. 이것이 작동하지 않는 이유는 무엇입니까?
distb = Distribution( Continuous Distribution( Column( :height ) ) ) ;
// Extract min median max and SD
resultsdt[5, 7] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 11 ); // min
resultsdt[5, 8] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 6 ); // median
resultsdt[5, 9] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 1 ); // max
resultsdt[5, 10] = distb[Outline Box( "height" ), Outline Box( "Summary Statistics" ), Number Col Box( 1 )] << get( 2 ); // Std dev.
그리고 왜 그래야만 합니까?
output = Report( dist = dt << Distribution( Continuous Distribution( Column( :height ) ) ) );
distb1, distb2와 같은 이름을 쉽게 할당할 수 있는 여러 분포도가 있지만 필요한 경우
output = Report( dist = dt << Distribution( ..... ) );
이것이 나머지 코드에 어떤 영향을 미치는지 확인해야 합니다.
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.
안녕 @네오
내가 아는 한 JMP에는 닫힌 테이블의 셀에 데이터를 설정할 방법이 없습니다.
여기에 더 잘 아는 사람이 있으면 알려주십시오.
아마도 여전히 수집하는 동안 정보를 유지하기 위해 중개자로서 다른 테이블을 열고 마지막에 최종 결과 테이블을 열 수 있습니다.
론
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.감사 @ron_horne . 나는 이것이 효과가 있다고 생각합니다. 그러나 실제 문제에 대해 이것을 시도하기 전에 한 가지 질문이 있습니다. 값을 전달하기 전에 "결과 테이블"을 열어야 합니까?
내 경우 "결과 테이블"은 저장된 파일이며 다른 방법으로 값을 전달할 수 없는 경우가 아니면 열 계획이 없었습니다.
(값이 전달될 때 인스턴스에서 "결과 테이블"을 열어야 하는 경우 나머지 코드를 변경해야 합니다.)
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.안녕 @네오
이 스크립트에서 필요한 것을 추출할 수 있는지 확인하십시오.
Names Default To Here( 1 );
// set up a table to accept the results
resultsdt = New Table( "Results Table",
Add Rows( 20 ),
New Column( "Column 1" ),
New Column( "Column 2" ),
New Column( "Column 3" ),
New Column( "Column 4" ),
New Column( "Column 5" ),
New Column( "Column 6" ),
New Column( "Min", Numeric ),
New Column( "Median", Numeric ),
New Column( "Max", Numeric ),
New Column( "SD", Numeric )
);
// Open Data Table: Big Class.jmp
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Launch platform: Distribution
output = Report( dist = dt << Distribution( Continuous Distribution( Column( :height ) ) ) );
// Extract min median max and SD
resultsdt[5, 7] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 11 ); // min
resultsdt[5, 8] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 6 ); // median
resultsdt[5, 9] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 1 ); // max
resultsdt[5, 10] = output[Outline Box( "height" ), Outline Box( "Summary Statistics" ), Number Col Box( 1 )] << get( 2 ); // Std dev.
출력에서 숫자를 추출할 때는 주의가 필요합니다. 기본 설정으로 인해 출력이 다르거나 한 창에 여러 출력이 포함된 경우 위치에 대한 올바른 참조가 변경될 수 있습니다.
작동하는지 알려주세요.
론
Re: 계산된 통계 항목을 저장된 데이터 테이블의 특정 좌표로 전달합니다.제 생각에는 데이터 테이블 첨자 이것으로 당신을 도울 수 있습니다
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt[10,3] = "AAAAAAAAAAAAAA";