다른 열을 기반으로 열에 값을 할당하는 사용자 입력을 위한 새 창을 만들기 위해 JMP 스크립트를 만드는 방법안녕하세요,
나는 JMP 스크립트의 특정 부분에 갇혀 있고 다른 사람들의 도움을 받기를 희망하고 있습니다.
다음과 같은 데이터 세트가 있지만 카테고리가 더 많고 각각 더 긴 이름이 있습니다.

주어진 열을 기반으로 숫자 값으로 다른 열을 만들고 싶습니다. 이 제품은 사용자가 카테고리에 해당하는 숫자 값을 입력할 수 있는 숫자 편집 상자와 함께 각 카테고리가 나열된 팝업 창과 함께 완전히 자동화되어야 합니다. 예를 들어:
팝업 창 상자: 팝업 창 상자에 모든 프롬프트가 있는 새 창.
A에 해당하는 값 입력: ___1___ B에 해당하는 값 입력: ___2___ C에 해당하는 값 입력: ___삼___ D에 해당하는 값 입력: ____4__ E에 해당하는 값 입력: ___5___ |
결과 데이터 테이블은 다음과 같아야 합니다.

아래는 현재 가지고 있는 JMP 스크립트입니다. 이 게시물에 JMP 파일도 업로드했습니다. 내가 도움이 필요한 것은 빨간색 텍스트 아래에. 사용자 입력을 기반으로 목록의 i번째 고유 범주에 해당하는 for 루프에서 i번째 값을 할당하는 데 문제가 있습니다. unique_char , 초기화된 숫자 목록의 i번째 위치로, num_list , 열 2를 생성하기 위한 다음 for 루프에서 나중에 사용됩니다(아래 JMP 스크립트 끝).
dt = Current Data Table();
//get the unique character variable list
Names Default To Here( 1 );
col9 = Column(dt, "Column 1");
unique_char = Associative Array(col9) << get keys; // unique_char = {"A", "B", "C", "D", "E"}
//get n items in character variable list
nuniquechar = N Items(unique_char); //will be 5, if categories are A, B, C, D, E
//initalize number list
num_list = {};
//create new window to create multiple number edit boxes
nw = New Window( "Set Values",
<<MODAL> // HELP:
// name a numeric variable on each iteration that will be the holder of a numeric edit box
// put the resulting ith entry into the num_list
num_list[i] = number edit box(),
// number box default is null/missing. If no input, place a missing value in the num_list
)
);<BR /><BR />// TO DO: <BR />// Create new column assigning the num_list values to <BR />// the corresponding rows based the unique character value. <BR />// Pseudo-code: <BR />// for(i in 1:nuniquechar)<BR />// if :column 1 = unique_char[i], num_list[i]<BR />//<BR />//</MODAL>이 결과는 다음 조건부 논리를 사용하여 열 1의 범주를 기반으로 열 2를 만드는 자동화되고 사용자 친화적인 버전입니다.

데이터 테이블Re: 다른 열을 기반으로 열에 값을 할당하는 사용자 입력을 위한 새 창을 만들기 위해 JMP 스크립트를 만드는 방법값을 unique_aa 연관 배열로 가져오기 위해 숫자 편집 상자와 함께 << Set Function을 사용하고 있습니다. 그런 다음 모달 창을 닫은 후 해당 연관 배열을 사용하여 필요한 수식 열을 작성합니다.
Names Default To Here(1);
dt = Current Data Table();
//get the unique character variable list
col9 = Column(dt, "Column 1");
unique_char = Associative Array(col9) << get keys;
nuniquechar = N Items(unique_char); //will be 5, if categories are A, B, C, D, E
unique_aa = Associative Array(unique_char, Repeat({.}, nuniquechar)); //repeat to initialize values as missing
//create new window to create multiple number edit boxes
vlbExpr = V List Box();
For(i = 1, i <= nuniquechar, i++,
Insert Into(vlbExpr, Text Box("Number for " || Char(unique_char[i]) || ":")); //i.e. "Number for A:"
Eval(
Eval Expr(Insert Into(vlbExpr, Number Edit Box(., <<SET function=""></SET>
Eval(EvalExpr())에 대한 정보는 다음을 참조하십시오. Eval Insert, Eval Expr, Parse 및 Substitute를 사용하여 한 표현식을 다른 표현식에 삽입 . 그리고 당신이 공식을 갖고 싶다면
Re: 다른 열을 기반으로 열에 값을 할당하는 사용자 입력을 위한 새 창을 만들기 위해 JMP 스크립트를 만드는 방법여기에 내가 함께 넣은 작은 스크립트가 있습니다. 새 열을 숫자로 만드는 선택적 선택기를 원하지 않을 수도 있습니다(여기서는 문자로 둡니다).
새 열 이름을 입력해야 하며 현재 데이터 테이블에 새 이름이 있는 경우 실행되지 않는 검사가 있습니다(JMP가 열을 덮어쓰지 않는다는 것을 알고 있지만 여전히 혼란스러울 수 있습니다).
/* recode */
self = New Namespace();
Show( self << Get Name );
self:table = Current Data Table();
self:column = Insert( {}, self:table << Get Selected Columns );
self:column = self:column[1] << Get Name;
Show( self:column );
self:values = Associative Array( Column( self:table, self:column ) ) << Get Keys;
self:string list = {};
For( i = 1, i <= N Items( self:values ), i++,
Insert Into( self:string list, Char( i ) )
);
Eval( Eval Expr(
win = New Window( "Set Values",
<<MODAL></MODAL>Re: 다른 열을 기반으로 열에 값을 할당하는 사용자 입력을 위한 새 창을 만들기 위해 JMP 스크립트를 만드는 방법고려하셨나요? 열 > 다시 코딩 플랫폼?당신이 원하는 것을 할 수있는 좋은 저기술 방법 일 수 있습니다.
Re: 다른 열을 기반으로 열에 값을 할당하는 사용자 입력을 위한 새 창을 만들기 위해 JMP 스크립트를 만드는 방법확실히 - 그것은 내가 막히기 전에 하려고 생각했던 것입니다. 하지만 JMP 인터페이스를 잘 모르는 사람들을 위한 응용 프로그램을 갖고 싶습니다.