루프 용 JMP 스크립트의 문제안녕하세요, 두 가지 질문이 있습니다.
Ques1-
간단한 데이터 (첨부 됨)와 스크립트가 잘 작동하지만 for 루프로 변환하려는 한 있습니다. 올바른 것을 얻지 못합니다.
AIM-각 전류에 대해 상위 10 % 저항 값을 원합니다. 내 데이터는 대칭이 아니므로 각 전류의 데이터 포인트 수가 다릅니다.
동일한 데이터에는 현재 값이 7 개 뿐이며 실제 데이터에는 100 개의 값이 포함될 수 있습니다.
접근 방식-Quantile 테이블을 생성 한 다음 저항 값을 90 % Quantile 값으로 비교하고 'Top10 %'열을 추가합니다. 현재 값이 7 개인 샘플 데이터에 대해 모든 것이 잘 작동하지만 루프가 필요합니다. 슈퍼 유저가 for 루프에서 내가하는 실수가 무엇인지 알려 주면 for 루프를 구현하는 방법을 배우는 데 도움이 될 것입니다.?
도움이 필요하세요?
Ques2-상위 95 % 데이터를 얻는 가장 좋은 방법은 무엇입니까?
여기에 어떤 도움이 있습니까?
스크립팅Re : 루프에 대한 JMP 스크립트 문제아래 스크립트가 원하는 결과를 얻는 더 간단한 방법이라고 생각합니다.

Names Default To Here( 1 );
dtF2 = Data Table( "Final_Data" );
dtSum = dtF2 << Summary(
invisible,
Group( :Current ),
Quantiles( 90, :Res ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "stat" ),
link to original data table( 0 )
);
dtSum << delete columns( N Rows );
dtF2 << Update(
With( dtSum ),
Match Columns( :Current = :Current )
);
Close( dtSum, nosave );
dtF2 << New Column( "Top10%",
character,
formula( If( :Res >= :Quantiles90, "Top10" ) )
);
Re : 루프에 대한 JMP 스크립트 문제예, 완벽합니다. 훨씬 더 좋고 간단한 방법입니다. 요약 테이블에서도 분위수를 얻을 수 있다는 사실을 몰랐습니다. 설명하신대로 구현하고 있습니다.
분위수 및 상위 10 % 데이터를 제외하고 내 "for 루프"에서 무엇이 잘못 되었습니까?
도와 주셔서 감사합니다.
Re : 루프에 대한 JMP 스크립트 문제For () 루프 로직 관련
- 열은 하나의 수식 만 가질 수 있습니다. For () 루프 내에 수식 정의가 있으면 각 루프에 대해 다른 수식을 지정합니다. JMP가 정확히 무엇을하는지 모르겠습니다. 기껏해야 새 수식이 만들어 질 때 각 수식을 대체하여 마지막으로 만든 수식으로 끝납니다.
- 각 If 내에서 "실패"값을 설정하면 논리가 정확한 유일한 시간은 마지막 레벨이 현재 행의 레벨 인 경우입니다. 그렇지 않으면 레벨 3이 주어진 행의 현재 레벨이라고 가정합니다. JMP는 Level 1에 대한 If 문의 값을 Fail, Level 2, Fail, Level 3을 Top10 %로 설정하지만 For () 루프가 계속되므로 Level 4에 대한 테스트가 실패합니다 .... ..... 및 나머지 모든 레벨.
- 수식 외부에 정의 된 변수 값이있는 열에 대한 수식 (예 : dtF2, dtQ 및 dtQ 데이터 테이블의 열에 대한 참조)을 사용하면 해당 값과 데이터 테이블이 공식이 열립니다. 따라서 이러한 수식을 사용할 때 데이터 테이블에서 수식을 실행하면 수식을 삭제해야합니다.
dtF2:Name("Top10%") << delete formula;
다음은 작동 할 것으로 생각되는 공식의 버전입니다 ..... 나는 테스트하지 않았지만 접근 방식을 보게 될 것입니다.
dtF2 << New Column( "Top10%",
character,
FORMULA(
For( i = 1, N Rows( dtQ ), i++,
x = "";
If( dtF2:Current == dtQ:Level[i] & dtF2:Name( "Res" ) >= dtQ:Name( "90%" )[i],
x = "Top10"
);
);
If( x == "", x = "Fail" );
x;
)
);