jmp 스크립트를 사용하여 테이블 수식에서 부울 논리를 수행할 수 없습니다.안녕,
중심으로부터 반경 방향으로 100mm 이상 떨어진 점을 선택한 다음 숨기고 제외하는 간단한 스크립트를 실행하려고 합니다.
디버깅을 단순화하기 위해 이를 두 개의 스크립트로 나누었습니다. 첫 번째 스크립트는 Radial = (x^2 + y^2)^(1/2) 공식을 사용하여 열을 생성하고, 두 번째 스크립트는 이 공식을 평가하여 Radial > 100인 행을 선택하여 숨깁니다.
불행히도 이것은 작동하지 않습니다. 매우 이상한 이유로, 평가는 특정 값까지만 이 공식에 적용됩니다. Radial > (30 이상)은 모든 행을 선택합니다.
두 가지 해결책이 보입니다.
1) 수식 자체가 아니라 Radial 열에 값을 쓰세요. (값은 제대로 평가되지만 수식은 그렇지 않습니다.) 이 작업을 하는 방법을 잘 모르겠습니다.
2) 문제를 이해하고 수정하여 공식을 30보다 큰 값과 비교 평가합니다.
스크립팅 답변이나 대화형 설명이 모두 허용될 것입니다. 이 문제를 해결하고 이를 통해 배우고 싶습니다.
감사해요!
데이브
// script for creating the Radial column<BR />dt1 = Current Data Table ();
dt1 << New Column( "Radial", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));<BR /><BR />// script for evaluating the Radial formula<BR />dt =Current Data Table();<BR />dt << Clear Row States; <BR />dt << Select where(Radial < 100);<BR />dt << hide and exclude;<BR />
데이터 블렌딩 및 정리Re: 테이블 수식에서 jmp 스크립트를 사용하여 부울 논리를 수행할 수 없습니다.약간의 추측을 하고 있지만 Radial 대 Radial 1의 문제는 열 변수의 범위를 올바르게 지정하지 않은 것입니다.귀하의 진술에서
dt << Select where((Radial 1> 100) | (Radial 1< 30) | (Pits Only > mf));
열 이름:Radial 1 및 :Pits Only 앞에 ":"를 배치해야 합니다.스크립트가 Radial 1과 함께 작동하는 이유는 JMP가 혼동할 수 있는 Radial 1이라는 메모리 변수가 없기 때문입니다.코딩 시도의 어느 시점에서 실수로 Radial의 메모리 변수를 생성했다고 가정합니다.
dt << Select where((Radial> 100) | (Radial< 30) | (Pits Only > mf));
JMP는 Radial의 값을 Radial의 값이 아닌 메모리 변수 값으로 대체했습니다.
Re: 테이블 수식에서 jmp 스크립트를 사용하여 부울 논리를 수행할 수 없습니다.답변해 주셔서 감사합니다.
스크립트의 마지막 줄을 내 파일에 붙여넣어도 문제가 해결되지 않았습니다. 그러나 열 이름을 "방사형 1"로 변경하고 끝에 Eval Formula가 있는 줄을 추가하여 솔루션을 얻을 수 있었습니다. 이것이 왜 작동하는지 확실하지 않습니다. 데이터 테이블은 약 1,300개의 행과 15개의 열로 구성되며 각 숫자의 너비는 10~12입니다.
다음 두 스크립트가 작동합니다. 전체를 붙여넣고 있습니다. 다른 라인은 피트 깊이와 분포를 평가합니다.
수정 사항이 왜 효과가 있었는지 아십니까? 나는 하루의 대부분을 이것에 있었다.
스크립트 1: "구덩이만" 및 "방사형 1" 열 만들기
dt1 = Current Data Table ();
dt1 << Clear Row States;
dt1 << New Column( "Pits Only", Formula (If( :Name( "Height (mm)" ) <= 0, :Name( "Height (mm)"), 0 )) );
dt1 << New Column( "Radial 1", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));
dt1 << Eval Formula;
obj = dt1 << Distribution( Column( :Pits Only), Horizontal Layout( 1 ), Count Axis);
스크립트 2: 피트만 > 10 또는 방사형 1 > 100 또는 방사형 1 < 30인 행 숨기기 및 제외
dt =Current Data Table();
dt << Clear Row States;
win = New Window( "Feature Depth" , <<MODAL> 100) | (Radial 1< 30) | (Pits Only > mf));
dt << hide and exclude;</MODAL>
Re: 테이블 수식에서 jmp 스크립트를 사용하여 부울 논리를 수행할 수 없습니다.여기에서 문제를 재현하는 데 문제가 있는 것 같습니다. 다음은 테스트에 사용한 스크립트입니다.
dt1 = New Table( "Community 416651 Select Where",
Add Rows( 1000000 ),
New Column( "x coordinate",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 5, 100, 5 ) ),
Set Selected
),
New Column( "y coordinate",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 5, 100, 5, 20 ) ),
)
);
dt1 << New Column( "Radial",
Formula(
(X coordinate ^ 2 + Y coordinate ^ 2) ^ (1 / 2)
)
);
dt1 << Select where( Radial < 60 );
따라서 스크립트와 데이터 테이블에 대한 자세한 정보가 필요합니다.
데이터 테이블의 크기는 얼마입니까? 당신의 스크립트는 또 무엇을 하고 있습니까?
Re: 테이블 수식에서 jmp 스크립트를 사용하여 부울 논리를 수행할 수 없습니다.방사형 열을 만들기 위한 스크립트
dt1 = Current Data Table ();
dt1 << Clear Row States;
dt1 << New Column( "Radial", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));
방사형 공식을 평가하기 위한 스크립트
dt =Current Data Table();
dt << Clear Row States;
dt << Select where(Radial < 100);
dt << hide and exclude;