안녕하세요,
데이터 필터 명령의 where 절에 벡터를 전달하는 방법을 배우려고합니다. where 절에서 작동하는 문장보다 동등하지는 않은 것처럼 보이기 때문에 이것을 알아 내려고합니다. 그러나 Where (: columnname == {1,2})를 전달하면 작동합니다. 그것은 간단해야하지만 그것은 버그가 있다는 것을 증명하는 것으로 끝나고 올바른 구문을 이해할 수없는 것 같습니다. 예제 코드는 아래와 같습니다.
GE_Table = Current Data Table();
GE_Table << DataFilter(Add Filter(
columns(:SUSPECT_COUNT,:SYMPTOM_COUNT),
Where( :SYMPTOM_COUNT == 1),
Where( :SUSPECT_COUNT <=2 ), //this doesn't work but Where( :SUSPECT_COUNT == {1,2}) does...?????
show window(0)
)
);어떤 아이디어?
답장을 보내 주셔서 감사합니다. 연속 형으로의 열 유형 전환은 나에게 가장 쉬운 해결책 이었지만 예제는 더 많은 코드 예제를 보는 데 도움이됩니다. 다시 한 번 감사드립니다!
나는 당신이 모델링 타입 문제로 뛰어 다니고 있다고 생각합니다.
suspect_count 열은 명목상입니다. 맞습니까? 그것의 명목상 가치 목록이 주어지기 때문에. (그것 때문에 목록은 중괄호 안에.) 열이 숫자 연속 있다면 스크립트가 작동합니다.
이 스크립트에 대해 살펴보십시오.
나이는 명목상 숫자이며, 필자는 필자가 12 번과 14 번을 선택했습니다 (중괄호, 구분 된 칼럼). 그러나 가중치는 숫자 연속이므로 부등호 "<= 100"이 작동합니다. 구문을 빠르게 정리하는 방법은 필터를 수동으로 작성한 다음 행 필터의 빨간색 삼각형 메뉴에서 스크립트를 클립 보드 또는 스크립트 창에 저장하는 것입니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Data Filter(
Add Filter(
columns( :weight, :age ),
//Where( :weight >= col minimum(:weight) & :weight <= 100 ),
Where( :weight <= 100 ),
Where( :age == {12, 14} ),
Display( :age, Blocks Display )
)
);
주석 처리 된 줄 ( "//")에 메모 : 이는 값이 열 (또는 평가하는 모든 엘)에있을 수 있음을 보여주기위한 것입니다.
그렇다면 좀 더 긴 질문을 위해, "어떻게 값을 목록에 전달한 다음 필터에서 목록을 사용합니까?" (hevy paraphrasing을 용서해주십시오)
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Summarize( age_levels = By( :age) );
show(age_levels);
parse(age_levels[2]);//second thing in the list of age_levels, returns a number
age_list={};//empty list
insert into(age_list,parse(age_levels[2]));//second thing in the list of age_levels, "parse" returns a number not a quoted string
insert into(age_list,parse(age_levels[4]));//add 4th thing
show(age_list);//look at the log to see the values
dt << Data Filter(
Add Filter(
columns( :weight, :age ),
Where( :weight <= 100 ),
Where( :age == age_list ),//note the list gets evaluated here
Display( :age, Blocks Display )
)
);
이 스크립트는 JMP 스크립트 창에서 읽기가 약간 쉬울 수도 있습니다.
문제는 필터링중인 열이 연속 열이 아니라 서수 또는 공칭 열입니다. 따라서 필터에 대한 다른 방법론.