JSL에서 로컬 데이터 필터 조작값 목록이 주어지면 로컬 데이터 필터의 한계까지 쓰고 싶습니다. 다음은 (거의) 작동하는 예입니다(데이터 필터를 제거하고 동적으로 데이터 필터 표현식을 빌드하는 것을 기반으로 다시 추가). 하지만 복잡하게 느껴집니다. 이것이 가장 좋은 방법입니까? (열 수가 다른 다른 테이블에서도 동적으로 작동해야 함)
dt = Open("$SAMPLE_DATA\Fitness 3D.jmp");
sm = dt << Scatterplot Matrix(
Y( :Runtime, :RstPulse, :RunPulse, :MaxPulse ),
X( :Age, :Weight, :Oxy ),
Fit Line( 0 ),
Local Data Filter( Add Filter( columns( :Age, :Weight, :Oxy ) ) )
);
ColExp = expr(columns( :Age, :Weight, :Oxy ));
//Modify this expression based on list values
AndExp = expr(Where(:Age >=0 & :Age <=100));
sm << Remove Local Data Filter;
Eval(
Insert(
Expr( Send( sm ) ),
Insert(
Expr( Local Data Filter() ),
Insert(
insert(
expr(Add filter()),
name expr(ColExp)
),
//name expr(WhereExp)
insert(
expr(Where()),
name expr(AndExp)
)
)
)
)
);스트레치 목표의 경우 누를 때 로컬 데이터 필터의 현재 제한을 목록이나 행렬로 읽는 버튼도 추가하고 싶습니다.
스크립팅Re: JSL에서 로컬 데이터 필터 조작이 예는 (전역) 데이터 필터에 대한 것이지만 Where() 인수를 추가하여 원하는 방식으로 제한을 설정하는 방법을 보여줍니다. 즉, 필터를 열 때 제약 조건을 지정할 수 있습니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
obj = dt << Data Filter();
obj << Add Filter( columns( :POP ) );
obj << Add Filter(
columns( :Region, :State, :City ),
Where( :Region == "S" ),
Where( :State == {"SC", "NC"} )
);Re: JSL에서 로컬 데이터 필터 조작여기서 대체를 사용하는 것이 좀 더 깔끔한 옵션일 수 있습니다.
dt = Open("$SAMPLE_DATA\Fitness 3D.jmp");
sm = dt << Scatterplot Matrix(
Y(:Runtime, :RstPulse, :RunPulse, :MaxPulse),
X(:Age, :Weight, :Oxy),
Fit Line(0),
f = Local Data Filter(Add Filter(columns(:Age, :Weight, :Oxy)))
);
ColExp = Expr(
columns(:Age, :Weight, :Oxy)
);
AndExp = Expr(
Where(:Age >= 0 & :Age <= 50)
);
Eval(Substitute(
sm << Remove Local Data Filter;
Expr(
f = sm << Local Data Filter(
_cols_,
_where_
)
),
Expr(_cols_), Name Expr(ColExp),
Expr(_where_), Name Expr(AndExp)
));
// You can try to parse this for local data filter limits
w = f << Get where clause;
show(w);
제한의 경우 where 절을 구문 분석하거나 그 안에 있는 DFintMinMaxBox 및 NumberEditBoxes에 액세스할 수 있습니다(나는 Where 절을 구문 분석하려고 시도할 것입니다). 이에 대한 다른 방법도 있을 수 있습니다(Show Properties(f)에 몇 가지 아이디어가 있을 수 있음).

Re: JSL에서 로컬 데이터 필터 조작좋아, 내가 훨씬 더 간단한 옵션(예: f[1] << set limit(1, 2);) 또는 뭔가를 놓치고 있지 않다는 것을 확인해주셔서 감사합니다. 그럼 표정조작이겠죠 
그리고 예 버튼의 경우 xpath를 사용하여 모든 numbereditbox를 추출하고 순서에서 의미를 추론할 수 있습니다. 나는 단지 당신이 한계를 알려주기 위해 로컬 데이터 필터를 직접 쿼리할 수 없다는 것을 확인하고 싶었습니다.