특정 열에 누락된 값이 포함된 전체 행을 필터링하는 JSL 스크립트친애하는 커뮤니티 여러분,
저는 초보 사용자이며 다음 코드에 대해 친절한 도움을 요청하고 싶습니다. "missing" 함수의 인수가 잘못된 것 같습니다.
특정 범위의 값이 포함된 행이 표시되는 테이블을 표시하는 스크립트를 만들고 싶습니다. 또한 필터링에 사용된 두 열 중 빈 셀이 있는 행은 제외됩니다.
코드는 다음과 같습니다.
dt = Current Data Table(); // Assumes you have a data table already opened
// Convert Column1 to numeric data type
dt << As Numeric("Temperatur");
// Convert Column2 to numeric data type
dt << As Numeric("Menge");
// Create the conditions to filter the rows
condition1 = Column(dt, "Temperatur") << Get Values() > 25;
condition2 = Column(dt, "Menge") << Get Values() > 0;
// Create a condition to remove empty cells
condition3 = Any(Is Missing(dt << Get Values("Temperatur"))) == 0 | Any(Is Missing(dt << Get Values("Menge"))) == 0;
// Apply all three conditions to filter the data table
filtered_dt = dt << Select Where(condition1 & condition2 & condition3);
// Show the filtered data table
filtered_dt << Show();
모든 탐색에 대해 미리 감사드립니다. JMP 버전 17을 사용하고 있습니다.
남자 이름
자동화 및 스크립팅Re: 특정 열에 누락된 값이 포함된 전체 행을 필터링하는 JSL 스크립트안녕 마이클.
JMP의 멋진 점은 스크립팅을 몰라도 GUI와 마우스만 사용할 수 있다는 것입니다.
그런 다음 단계를 실행한 후 고급 로그로 이동하여 코드를 확인할 수 있습니다.
- 행/행 선택/위치 선택(Ctrl + W)

- 선택한 행에 대한 데이터 보기 열기:

- 로그를 확인하세요:

Jmp는 사용자가 원하는 것을 이해하고 두 단계를 한 줄의 코드로 결합합니다.

명령을 직접 구성하려면 일부 문자열을 정의하고 연결한 다음 최종 코드를 구문 분석하고 평가하면 됩니다.
cond1 = "Is Missing( :age )";
cond2 = ":age > 16";
Eval(Parse("dt << Select where( "|| cond1 || " | " || cond2 || " ) << Data View;"))
내 제안: 표현식 처리를 배우고 이해하는 데 시간을 투자하세요.
훌륭한 튜토리얼: JSL을 사용하여 효율적이고 강력한 애플리케이션 개발(EU 2018 415) 작성자: @joseph_morgan
실제로는 접근 방식과 매우 유사하다는 것을 알 수 있습니다.
일부 조건을 JSL "기호" 조건 1, 조건 2로 저장한 다음 이를 사용하여 최종 표현식을 구성하고 평가합니다.
일부 코드 수정과 Expr() 및 Name Expr()이 여기저기서(Jmp가 코드의 마지막 줄에 연결되기 전에 조건을 평가하는 것을 방지하기 위해) 코드는 다음과 같아야 합니다.
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
condition 1 = Expr(Is Missing( :age ));
condition 2 = Expr(:age > 16 );
combined condition=Expr(or());
Insert into(combined condition, Name Expr(condition1));
Insert into(combined condition, Name Expr(condition2));
Eval(Substitute(dt << Select where( _cond_ ) << Data View),
Expr(_cond_),Name Expr(combined condition)));
Re: 특정 열에 누락된 값이 포함된 전체 행을 필터링하는 JSL 스크립트데이터 테이블에서 행렬 비교와 선택을 혼합하고 있습니다. 이 경우 << Select Where 또는 << Get Rows Where 중 하나를 사용하고 << Get Values는 사용하지 않을 가능성이 높습니다(대신 << Get Rows Where를 사용할 수 있음). << 위치를 선택하세요. 그러나 이는 수행하려는 작업에 따라 다릅니다.
조건을 단일 Select Where 문으로 직접 결합할 수 있습니다. (만약 조건을 분리하려면 정확히 동일한 문을 재사용하지 않는 한 주석을 사용하겠습니다.)
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt[[1 2 3 20 30], "height"] = .;
dt[[10 15 16 30], "weight"] = .;
// Comparison
dt << Select Where((:height > 60) & (:weight > 90));
selrows = dt << get selected rows; // to get a matrix of selected row numbers
r = dt << Get Rows Where((:height > 60) & (:weight > 90));
이 경우에는 누락된 값을 확인할 필요가 없습니다.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt[[1 2 3 20 30], "height"] = .;
dt[[10 15 16 30], "weight"] = .;
// Comparison
r1 = dt << Get Rows Where((:height > 60) & (:weight > 90) & (!IsMissing(:height) | !Is Missing(:weight)));
r2 = dt << Get Rows Where((:height > 60) & (:weight > 90));
r1 == r2;Re: 특정 열에 누락된 값이 포함된 전체 행을 필터링하는 JSL 스크립트호기님, 정말 감사합니다. 여러분의 도움으로 무사히 달릴 수 있었습니다!
Re: 특정 열에 누락된 값이 포함된 전체 행을 필터링하는 JSL 스크립트Jthi님, 정말 감사합니다. 여러분의 도움으로 제가 달릴 수 있게 되었습니다!