열 수식 내부에 변수 선언안녕,
열 수식 내에 변수를 선언하는 것이 좋은 습관입니까? 아니면 오류가 발생할 위험이 있습니까? 내 공식은 잘 작동하지만 신뢰할 수 없을까 걱정됩니다.
rownum = Row();
If( :Measurement type == "STUDY_VARIABLE",
:Control means[Min(
Current Data Table() << get rows where( :Measurement type == "STUDY_CONTROL" & :Control group == :Control group[rownum] )
)],
:Control means
);
설정은 다음과 같습니다.
- :측정 유형은 각 행에 STUDY_CONTROL 또는 STUDY_VARIABLE로 라벨을 지정하는 열입니다.
- :제어 그룹은 STUDY_VARIABLES인 행을 관련 STUDY_CONTROL 행의 적절한 평균(:Control 수단)과 연결하기 위해 레이블(단지 문자)을 사용하는 열입니다.
- :Control group[Row()]가 작동하지 않아서 rownum 변수를 앞에 지정했습니다.
이것은 우아한 해결책인가 아니면 위험한 해킹인가?
두 번째 질문으로 편집자는 수식에 Current Data Table()을 사용하는 것이 위험하다고 경고합니다. 더 나은 대안이 있습니까?
도움을 주셔서 감사합니다. 이것이 첫 번째 질문입니다!
데이비드
Re: 열 수식 내부에서 변수 선언클럽에 오신 것을 환영합니다!
:)
'Current Data Table()'에 대한 질문에 대해 Scripters Club Recording: Building Robust and fail-safe scripts에서 공유된 스크립트의 스크린샷을 보여드리겠습니다.

테이블을 변수에 저장하고 스크립트에서 해당 변수를 사용합니다. 스크린샷 예에서 그것은 'dt'입니다.
Re: 열 수식 내부에서 변수 선언JSL 스크립팅에 관한 정말 훌륭한 강의네요!
이 1시간이 몇 달 동안의 두통을 덜어줄 거예요 : )
귀하의 문제에 대해서는 Col Min( ...) 을 살펴보시기 바랍니다.
이 프로그램은 귀하를 대신하여 모든 작업을 수행합니다.
행 번호를 선언 할 필요가 없습니다. 현재 데이터 테이블 에 액세스할 필요도 없고, where()에서 행을 가져올 필요도 없습니다.
: )

Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "Measurement type",
Character,
Formula(
Map Value(
:sex,
{"F", "STUDY_VARIABLE", "M", "STUDY_CONTROL"}
)
)
);
:weight << Set Name( "Control means" );
:age << Set Name( "Control_Group" );
// ^^^^^^^^prepare table
// vvvvvvvv how to use Col Min()
New Column( "myCol",
Formula(
If( :Measurement type == "STUDY_VARIABLE",
Col Minimum(
If( :Measurement type == "STUDY_CONTROL",
:Control means,
Empty()
),
:Control_Group
),
:Control means
)
)
)