Veribles를 사용하여 새 열 만들기/추가안녕하세요 여러분, 혼란스러운 제목에 대해 사과드립니다. 어떻게 표현해야 할지 잘 모르겠어요.
제 질문은 다음과 같습니다. 긴 조건을 사용하여 새로운 열을 추가하는 코드가 있습니다.
모든 열의 조건은 동일하며, 변경되는 매개변수 하나만 제외합니다.
매번 전체 코드와 새 매개변수 값을 포함하는 조건을 작성하는 대신, 매번 새 열의 조건에 필요한 값을 전송할 매개변수 대신 변수를 사용할 템플릿(함수와 유사)을 만드는 방법이 있습니까?
자동화 및 스크립팅기본 데이터 분석 및 모델링Re: Veribles를 사용하여 새 열 만들기/추가이와 같은 경우 함수나 표현식을 사용할 수 있습니다.
https://www.jmp.com/support/help/en/18.0/#page/jmp/advanced-expressions-macros-and-lists.shtml#ww339382
https://www.jmp.com/support/help/en/18.0/#page/jmp/advanced-functions.shtml#
Eval Insert, Eval Expr, Parse 및 Substitute를 사용하여 하나의 표현식을 다른 표현식에 삽입합니다.
Re: Veribles를 사용하여 새 열 만들기/추가코드를 작성할 필요가 없습니다.
JMP 18부터 이 기능은 매우 쉽게 사용할 수 있습니다. 토론/수식/ 기능 #3을 살펴보세요.
간단히 말해서:
입력으로 사용할 열을 선택한 다음 열 머리글을 마우스 오른쪽 버튼으로 클릭하고 다음을 클릭합니다.
새로운 수식 열 / 
마지막 단계로 수식을 입력하고 클릭하세요. 
[128개의 열을 선택했으므로 128개를 생성합니다 .
N개의 열을 선택하면 N개의 열이 생성됩니다 : )
Re: Veribles를 사용하여 새 열 만들기/추가새로운 수식의 오른쪽 클릭 메뉴를 통해 정확히 동일한 수식을 계속 사용하려면 사용자 정의 함수인 "사용자 정의 함수"를 만들고 범주 변환 옵션을 활성화하여 메뉴에 표시되도록 할 수 있습니다.
재시작 후에는 코드를 다시 실행해야 하므로 AddIn이나 시작 스크립트에 코드를 포함하세요.
Names Default To Here( 1 );
myAdd =
New Custom Function(
"custom",
"Add",
Function( {x, y = 1},
x + y - 1
)
);
myAdd << Transform Category( 1 );스크립팅 인덱스에서:

하지만 이 접근 방식은 매우 "정적"입니다. 매개변수를 변경할 가능성을 얻으려면 여기에서 투표해야 합니다.
새로운 수식 열 메뉴: 사용자 정의 미니 GUI
Re: Veribles를 사용하여 새 열 만들기/추가숫자를 더하는 함수의 한 예가 있습니다. "좋은" 함수가 되기 위한 몇 가지 검사가 누락되었지만, 변경될 수 있는 값(이 경우 추가할 열 이름과 숫자)을 평가해야 한다는 필요한 아이디어를 제공합니다(앞서 언급했듯이 한 표현식을 다른 표현식에 삽입 ).
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
cols = {"height", "weight"};
add_num_to_col = Function({dt, colname, num_to_add}, {Default Local},
new_col = Eval(EvalExpr(
dt << New Column(colname || " add " || char(num_to_add), Numeric, Continuous, Formula(
Expr(NameExpr(AsColumn(dt, colname))) + Expr(num_to_add)
));
));
return(new_col);
);
col1 = add_num_to_col(dt, "height", 10);
col2 = add_num_to_col(dt, "height", 20);
col3 = add_num_to_col(dt, "weight", 5);
Write();
때때로 Eval(Substitute())를 사용하면 더 깔끔하고 이해하기 쉬운 솔루션이 될 수 있으며 이는 다음과 같습니다.
add_num_to_col = Function({dt, colname, num_to_add}, {Default Local},
new_col = Eval(Substitute(
Expr(dt << New Column(colname || " add " || char(num_to_add), Numeric, Continuous, Formula(
_colname_ + _num_to_add_
))),
Expr(_colname_), Name Expr(AsColumn(dt, colname)),
Expr(_num_to_add_), num_to_add
));
return(new_col);
);Re: Veribles를 사용하여 새 열 만들기/추가이전 접근 방식을 약간 변형 하여 결합한 방식입니다.
- 사용자 정의 함수 생성 *)
- 수식 카테고리에 추가
- 열 머리글을 마우스 오른쪽 버튼으로 클릭하고 새 수식 열 /을 클릭합니다.

- 새로운 공식을 사용하세요
- ... 그리고 매개변수를 수동으로 입력하세요:

*)
Add Custom Functions(
New Custom Function(
"custom",
"add++",
Function( {column, num_to_add},
{Default Local},
column,
num_to_add
),
<<FORMULA category=""></FORMULA>The benefit: the user can enter specific parameters for every new column.
The disadvantage: no <STRONG><EM>일괄</EM> </STRONG>mode like in the previous posts.<BR /><BR />kind of disadvantage: JMP doesn't <EM>해결하다/바꾸다</EM> the formula, it keeps it as <FONT face="courier new,courier">추가++(...)</FONT>.<BR /> To keep it alive the formula definition has to be executed again after a restart of JMP - and maybe: shared with colleagues.
Re: Veribles를 사용하여 새 열 만들기/추가도움을 주신 모든 분들께 감사드립니다.
아마 누군가가 나에게 설명해 줄 수 있는 새로운 관련 문제가 있습니다.
특정 열에서 데이터가 없는 행을 삭제하려면 다음 방법을 사용했습니다.
dt << select where( 누락된 열( dt,col_name )[row()] ));
*결과적으로 올바른 행을 삭제하지만 동시에 열의 값을 삭제합니다. 누군가 실수를 지적해 줄 수 있나요?
여기에 스크립트 자체를 첨부합니다.
Re: Veribles를 사용하여 새 열 만들기/추가Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col_name="x";
New column(col_name); // maybe another column with the same name?
new_col = New column(col_name, Formula(if(:height>60,1 )));
// get the correct column name - uncomment to make it work
//col_name = new_col << get name();
dt << select where( Is missing( Column( dt,col_name )[row()] ));
wait(1);
dt << delete rows;
Re: Veribles를 사용하여 새 열 만들기/추가열을 참조하는 데 문자열을 사용하는 것은 권장하지 않습니다. 실제 열이 "2"를 추가하여 생성되는 경우가 너무 많으며 문자열이 다른 열로 이어집니다.
열을 생성하면 열에 대한 핸들을 얻습니다. 이 핸들을 사용하면 됩니다. 그러면 올바른 열로 안내해 줍니다.
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col_name="x";
new_col = New column(col_name, Formula(if(:height>60,1 )));
dt << select where( Is missing( new_Col[] ));
Re: Veribles를 사용하여 새 열 만들기/추가또한 []를 사용하여 열 Column(col_name)을 현재 값인 As column(col_name) 으로 바꾸는 것도 마음에 들지 않습니다.
:col은 둘 다 할 수 있어요. 저는 @jthi 에게서 배웠어요.
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col_name="x";
new_col = New column(col_name, Formula(if(:height>60,1 )));
myCol = Name Expr(As Column(new_col)); // very cool trick (c) Jarmo
Show(Name Expr(myCol));
dt << select where( Is missing( myCol ));