여러 기준으로 액터 선택내 데이터에는 동일한 액터의 관측치가 여러 개 있습니다.여러 열을 기준으로 기준을 충족하지만 동일한 액터에 대한 다른 관찰에서 다른 기준을 충족하는 액터를 찾고 싶습니다.
예:

다음을 만족하는 액터를 찾고 싶습니다.
크기 < 250
그리고
대회 A의 경우: 점수 1 > 10 AND 점수 2 > 10
그리고
경기 B : 1점 > 10점 AND 2점 > 40점
그리고
대회 C : 3점 > 50점
따라서 위의 표에 대해 배우 B를 알려줘야 합니다.
감사!
Re: 여러 기준으로 액터를 선택하세요.안녕,
이를 수행하는 한 가지 방법은 아래와 같이 연관 배열을 연속적으로 교차하는 것입니다.
건배,
브래디
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 9 ),
New Column( "Actor", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 2, 3, 1, 2, 3, 1, 2, 3] ) ),
New Column( "Competition", Character, "Nominal", Set Values( {"A", "A", "A", "B", "B", "B", "C", "C", "C"} ) ),
New Column( "Score 1", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [12, 13, 20, 25, 15, 16, 16, 15, 12] ) ),
New Column( "Score 2", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [12, 46, 45, 25, 48, 34, 59, 45, 56] ) ),
New Column( "Score 3", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [45, 50, 55, 60, 45, 80, 52, 61, 43] ) ),
New Column( "Size", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [100, 200, 300, 100, 200, 300, 100, 200, 300] ) )
);
critExprList = {
Expr( :competition == "A" & :Score1 > 10 & :Score 2 > 10),
Expr( :competition == "B" & :Score1 > 10 & :Score 2 > 40),
Expr( :competition == "C" & :Score3 > 50)
};
ansAA = Associative Array( dt:actor[dt << get rows where( :size < 250 )] );
For( i = 1, i <= N Items( critExprList ), i++,
Eval(
Substitute( Expr( curAA = Associative Array( dt:actor[dt << get rows where( _CLAUSE_ )] ) ), Expr( _CLAUSE_ ), eval( critExprList[i] ) )
);
ansAA << Intersect (curAA)
);
dt << select where(contains(ansAA << get keys, :actor));Re: 여러 기준으로 액터를 선택하세요.응답해 주셔서 감사합니다!
예, 이것이 제가 사용한 해결 방법이지만 새 데이터 테이블로 분할하는 대신 동일한 데이터 테이블 내에서 방법이 있는지 궁금합니다.
현재 구조로는 불가능할 수도 있지만, 제가 경험이 부족해서 알 수 없습니다.Re: 여러 기준으로 액터를 선택하세요.이 선택을 수행하는 방법에 대한 내 솔루션은 데이터 테이블을 액터당 하나의 행으로 재구성한 다음 사용 가능한 액터당 모든 데이터가 있는 필수 선택 기준을 사용하는 것입니다.
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 9 ),
New Column( "Actor", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 2, 3, 1, 2, 3, 1, 2, 3] ) ),
New Column( "Competition", Character, "Nominal", Set Values( {"A", "A", "A", "B", "B", "B", "C", "C", "C"} ) ),
New Column( "Score 1", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [12, 13, 20, 25, 15, 16, 16, 15, 12] ) ),
New Column( "Score 2", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [12, 46, 45, 25, 48, 34, 59, 45, 56] ) ),
New Column( "Score 3", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [45, 50, 55, 60, 45, 80, 52, 61, 43] ) ),
New Column( "Size", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [100, 200, 300, 100, 200, 300, 100, 200, 300] ) )
);
dtSplit = dt << Split(
Split By( :Competition ),
Split( :Score 1, :Score 2, :Score 3, :Size ),
Group( :Actor ),
Sort by Column Property
);
dtSplit << select where( (:Size A < 250 & :Score 1 A > 10 & :Score 2 A > 10 &
:Score 1 B > 10 & :Score 2 B > 40 & :Score 3 C > 50) |
(:Size B < 250 & :Score 1 A > 10 & :Score 2 A > 10 &
:Score 1 B > 10 & :Score 2 B > 40 & :Score 3 C > 50) |
(:Size C < 250 & :Score 1 A > 10 & :Score 2 A > 10 &
:Score 1 B > 10 & :Score 2 B > 40 & :Score 3 C > 50)
);
If(N Rows(dtSplit << get selected rows) > 0, Dialog("The Actor(s) is/are " || char( dtSplit<<GET selected="" rows=""></GET>

Re: 여러 기준으로 액터를 선택하세요.답장을 보내 주셔서 감사합니다!
불행히도 그것은 작동하지 않습니다. "경쟁 = A AND (다른 A 기준) AND 경쟁 = B"라고 말하면 경쟁이 깨질 수 있기 때문입니다. 경쟁은 = A & B가 될 수 없기 때문입니다. 하지만 Competition = A AND (기타 A 기준) OR Competition = B AND (기타 B 기준)라고 말하면 모든 경쟁이 아니라 모든 경쟁에서 잘하는 배우를 제공합니다.
죄송합니다. 설명하기가 어렵습니다. 다른 대회의 결과를 포함하는 점수 1, 2 및 3 열에서 문제가 발생합니다. 한 가지 해결 방법은 '경쟁 A 점수 1' 등을 열로 말하면서 테이블을 분할하는 것이지만 현재 데이터 테이블 내에서 솔루션을 찾고 있습니다.Re: 여러 기준으로 액터를 선택하세요.고르다 행 > 데이터 필터 . 기준에 사용된 각 열을 선택하고 필터에 한 번에 하나씩 추가합니다. 그런 다음 이러한 각 변수에 대해 원하는 수준을 설정할 수 있습니다. 데이터 필터는 현재 데이터 테이블의 행 상태에 영향을 줍니다.
보다 도움말 > JMP 설명서 라이브러리 > JMP 사용 자세한 내용과 예시 안내.