유연한 수의 그룹을 처리하기 위해 group by를 스크립트하는 방법안녕하세요,
분석 자동화 작업 중이며 자동화 된 생성 스크립트를보다 일반적으로 만들어야합니다.
작업 흐름은 파생 값을 가져 오는 4 개의 열이있는 3 개의 열로 그룹화 된 요약 테이블을 만드는 것입니다. 괜찮습니다.
이제 원래 그룹화 변수 중 하나를 사용하여 단방향 플롯을 만들고 두 번째 변수로 플롯을 추가로 그룹화하려고합니다.
그룹화 :주기, 단계, 고유 단계
4 개의 별도 Oneway by Cycle 그룹화 된 단계.
자동으로 생성 된 스크립트는 내 테스트 파일에서 잘 작동합니다. 문제는 그것을 더 일반적으로 만드는 방법입니다.
스크립트를 보면 단계 열 값에 대한 특정 콜 아웃이 있습니다.
<< {Arrange in Rows (4)}, Where (: Step == 1), Where (: Step == 1))
그리고 테스트 케이스에는 단계에 대한 19 개의 값이 있습니다. 단계 수에 유연하게 적용하려면 어떻게해야합니까? 다양한 파일에는 단계 수가 다릅니다. 여기서 모범 사례는 무엇입니까? 내가 원하는 결과는 그룹화 상자가 표시된 단계의 값 (이제 플롯 뒤에 작은 텍스트로 표시됨)이있는 4 개의 플롯과 들어오는 파일이 가질 수있는 단계 수에 대한 로봇을 갖는 것입니다.
앤디
dt1=Data Table( dt) <<SUMMARY></SUMMARY>
스크립팅Re : 유연한 그룹 수를 처리하기 위해 group by 스크립트를 작성하는 방법약간의 진전이있었습니다.
대부분의 작업은 "By"연산자를 사용하여 처리 할 수 있습니다.
여전히 빠진 것은 4 개의 그룹으로 그룹을 정렬하여 그룹별로 각 플롯이 동일한 선에 있도록하는 방법입니다.
이견있는 사람
앤디
view = dt1 << Oneway(
Y( {:"Min(TV Pres (torr))"n ,:"Min(DS Pres (torr))"n,:"Max(TV Pres (torr))"n, :"Max(DS Pres (torr))"n}),
X( :Cycle ),
by (:Step),
Quantiles( 1 ),
Means( 1 ),
Mean Diamonds( 0 ),
Box Plots( 1 ),
X Axis Proportional( 0 ),
Points Jittered( 1 ),
Grand Mean( 0 ),
SendToReport(
Dispatch( {}, "Quantiles", OutlineBox, {Close( 1 )} ),
Dispatch( {}, "Oneway Anova", OutlineBox, {Close( 1 )} ),
Dispatch( {"Oneway Anova"}, "Analysis of Variance", OutlineBox, {Close( 1 )} )
)
);Re : 유연한 그룹 수를 처리하기 위해 group by 스크립트를 작성하는 방법아래는 4 개의 그래프를 단일 행과 분석에 지정된 각 열에 대한 행에 넣는 예입니다.

Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA\big class.jmp" );
// restrict to 4 ages to match the 4 level requirement
dt1 << select where( :age >= 16 );
dt1 << delete rows;
// Create a window to place the output in
nw = New Window( "test", lub = Lineup Box( N Col( 4 ) ) );
// Run the analysis with a By clause
view = dt1 << Oneway(
invisible,
Y( :height, :weight ),
X( :sex ),
Quantiles( 1 ),
Means( 1 ),
Box Plots( 1 ),
Mean Diamonds( 1 ),
by( :age ),
SendToReport(
Dispatch( {}, "Quantiles", OutlineBox, {Close( 1 )} ),
Dispatch( {}, "Oneway Anova", OutlineBox, {Close( 1 )} ),
Dispatch( {"Oneway Anova"}, "Analysis of Variance", OutlineBox, {Close( 1 )} )
)
);
// Take the elements from the outout and place in the window
// The display produces all levels of the by across one level
// of by group and then moves onto the next by group. Therefore
// the displays need to be picked across the full range of outputs
// to get the four grqaphs aligned
numCols = N Items( view ) / 4;
For( col = 1, col <= numCols, col++,
For( theRow = 1, theRow <= 4, theRow++,
lub << append( Report( view[(theRow - 1) * numCols + col] ) );
i++;
)
)
;