Tabbox 루프의 컨트롤 차트안녕하세요, 매개 변수 목록을 기반으로 컨트롤 차트를 출력하기위한 자동화 된 스크립트 작업 중입니다. 아래처럼 누적 된 데이터 테이블이 있습니다.

나는 컨트롤 차트를 생성하려고합니다. 스크립팅에 관한 한 지금까지 내가 가지고있다.
Rcols = dt_final << Get Column Names();
id = dt_final << get kets;
tb = tabbox();
for(i, i<=nitems(id), i++,
cols = Rcols;
dt = dt_final << subset(by(id[i]));
dt << sort(by(dt, :DATE_TIME_START), Order(Ascending), Replace Table);
ccExpr = Expr(Control Chart(
Sample Label( column(dt,:DATE_TIME_START) ),
KSigma( 3 ),
For( i = 1, i <= N Items( cols ), i++,
insert into(ccExpr, EvalExpr(Chart Col( Column( dt_final, Expr(cols[i]) ), Levey Jennings )))
);
cc = Eval(EvalExpr(
platform(dt_final,
Expr(
nameexpr(ccExpr)
)
)
));
);
tb << Append(group, cc);
// Create the display window
));
nw = New Window( "Control Charts", Outlinebox("Control Charts By Process ID", tb));나는 아마 내가 이것에 대해 갈 가장 좋은 방법은 아님을 알지만 이것은 궁극적으로 내가해야 할 일이다.
- 그룹화에 의한 부분 집합 dt_final
- 날짜 열을 숫자로 변경 -> 연속 -> 시간 -> m / d / yh : m (균등성 만)
- 하위 집합을 date_time_start로 정렬
- 각 열의 제닝스 통제 차트를 생성하고 탭 박스에 추가하십시오
- 모든 그룹에 모든 열이있는 것은 아니므로 데이터가없는 차트를 삭제하십시오.
그러나 누군가가이 루프에서 나에게 어떤 방향을 제시 할 수 있다면 날짜 데이터 유형을 변경하는 것과 같이 여전히 여기에 몇 가지 단계가 빠져 있습니다.
감사.
제목 : Re : 컨트롤 차트 Tabbox 루프에죄송합니다. 원래 스크립트에 스크립트에서 cols와 Rcols가 모두 있었기 때문입니다 (동일했습니다). 열을 삭제했지만 스크립트의 컨트롤 차트 열 목록을 작성하는 부분을 업데이트하는 것을 잊었습니다. 나는 여전히 기억 속에 칼을 가지고 있었기 때문에 그것은 잘 작동했다. 이전 회신에서 스크립트를 수정하여 해결할 것입니다.
제목 : Re : 컨트롤 차트 Tabbox 루프에와우, 이거 정말 대단해. 고마워. 네가 고마워. 나는 이것을 시도하고 실행할 때 오류가 발생합니다. 이것이 의미하는 바를 잘 모르겠다면 이해할 수 있습니다.
오류
'subscript', cols [/ * ### * / j]에 대한 액세스 또는 평가의 아래 첨자 범위
제목 : Re : 컨트롤 차트 Tabbox 루프에[업데이트] 스크립트의 버그를 수정했습니다.
이것은 모든 기준을 충족시키는 것으로 보이지만, 각 ID에 대해 테이블 전체를 생성하지 않기 때문에 결국에는 훨씬 더 깨끗하게 될 것이라고 생각하는 접근 방식이 조금 다릅니다. 테이블을 부분 집합하는 대신 각 탭의 컨트롤 차트에 Where () 절을 사용하여 각 ID의 데이터를 부분 집합으로 만듭니다.
dt_final = Current Data Table();
//Sort by Grouping and Start Time
dt_final << Sort(
By( :GROUPING, :DATE_TIME_START ),
Order( Ascending, Ascending ),
Output Table( "Final Sorted" ),
Replace Table
);
//List of Columns and Individual IDs
Rcols = dt_final << Get Column Names();
id = Associative Array(dt_final:GROUPING) << get keys;
//Initialize the window
nw = New Window("Control Charts",
Outlinebox("Control Charts By Process ID",
tb = tabbox();
)
);
//Create expression for control charts - use same expression for each subset of the data table
//We'll substitute different values for GroupID and col_list for each grouping
ccExpr = "Control Chart(
Sample Label( :DATE_TIME_START ),
KSigma( 3 ), col_list, Where(:GROUPING == \!"GroupID\!"))";
//Loop through each ID and add control charts to a new tab
for(i=1, i <= N Items(id), i++,
//If column has data, add it to the control chart report
cols_temp = ""; //will hold list of control charts for the current ID
//Loop through each column, determine if column has data for current ID
For( j = 3, j <= N Items( Rcols ), j++,
If(Sum(!Is Missing(Column(dt_final, j)[dt_final << Get Rows Where(:GROUPING == id[i])])) > 0,
cols_temp = cols_temp || Eval Insert("\[, Chart Col( Column( "^Rcols[j]^" ), Levey Jennings )]\");
)
);
//Substitute in the current ID for GroupID in ccExpr
ccExpr_temp = Substitute(ccExpr, "GroupID", id[i]);
//Substitute in the list of control chart columns for col_list in ccExpr
ccExpr_temp = Substitute(ccExpr_temp, "col_list", cols_temp);
//Add results to the tab box by parsing the string ccExpr_temp into an expression and evaluating it
tb << Add(id[i], platform(dt_final, Eval(Parse(ccExpr_temp))));
);
여기에 설명 할 내용이 많으므로 궁금한 점이 무엇인지 알려주세요.
제목 : Re : 컨트롤 차트 Tabbox 루프에물론, 여기에 이름표를 닦아 놓은 데이터 테이블이 있습니다.
제목 : Re : 컨트롤 차트 Tabbox 루프에스크립트와 함께 사용할 수있는 테이블을 게시 할 수 있습니까?
내가 처음으로 알아 차리는 것은 "<< 켓을 구하십시오"입니다. 그것이 "열쇠를 얻는"것이어야합니까? 그렇다면 배열을 사용하고 데이터 테이블을 사용해야합니다. GROUPING의 모든 고유 한 값 목록을 원한다고 생각합니다. 당신은 이것으로 할 수 있습니다 :
id = Associative Array(dt_final:GROUPING << Get Values) << Get Keys;
스크립트에서 볼 수있는 것보다 더 많은 내용이 있지만 작업 할 테이블이 없으면 디버깅하지 않을 것입니다.