여러 기준에 따라 행을 선택하는 방법은 무엇입니까?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕,
데이터 테이블을 하위 집합으로 만드는 스크립트를 작성 중입니다. 스크립팅 가이드의 코딩 예제에 따라 기준에 따라 선택할 수 있습니다.
각 행에 대해(Selected(Rowstate())=(name=="KATIE"));
KATIE와 LOUISE를 모두 선택하려면 이를 어떻게 일반화할 수 있나요?
이것은 작동하지 않습니다:
각 행에 대해(Selected(Rowstate())=(name=="KATIE","LOUISE"));
그렇다면 이에 대한 구문은 무엇입니까?
문안 인사
폴
Re: 여러 기준에 따라 행을 선택하는 방법은 무엇입니까?감사해요,
저는 각 기준을 개별 테이블로 분류한 다음 모든 기준을 결합했습니다.
새해 복 많이 받으세요 !Re: 여러 기준에 따라 행을 선택하는 방법은 무엇입니까?이것이 당신이 달성하려는 것입니까? "name_list"라는 목록에서 찾은 모든 일치 항목을 찾은 다음 하위 집합 데이터 테이블에 출력합니까?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
name_list = {"Clay", "Alice", "AMY"};
For( i = 1, i <= N Items( name_list ), i++,
i_name = Uppercase( name_list[i] );
dt << select where( :name == i_name, current selection( "extend" ) );
);
dtSub = dt << subset( selected rows( 1 ), selected columns( 0 ) );Re: 여러 기준에 따라 행을 선택하는 방법은 무엇입니까?안녕하십니까?
귀하의 스크립트에 감사드립니다.
이름 목록을 동적으로 처리하고 여전히 하위 집합을 지정할 수 있는 방법이 있는지 궁금합니다.
dt = 열려 있는 ( "$SAMPLE_DATA/빅 클래스.jmp" ) ;
name_list={"clay","앨리스","AMY", ...};
for(i=1,i<=nitems(name_list),i++,
i_name=이름_목록[i];
dt<<위치 선택(이름=i_name)
);
dt<<부분집합;
Re: 여러 기준에 따라 행을 선택하는 방법은 무엇입니까?이 구문은 좀 더 읽기 쉬울 수 있습니다.OR에는 세로 막대를 사용하고 AND에는 앰퍼샌드를 사용할 수 있습니다.
dt = 열려 있는 ( "$sample_data\빅 클래스.jmp" ) ;
dt << 어디를 선택하세요 (( 포함 ( : 이름 , "넥타이" ) | 포함 ( : 이름 , "OBER" ))
& 포함 ( : 섹스 , "에프" )) ;
Re: 여러 기준에 따라 행을 선택하는 방법은 무엇입니까?거의 다 왔어. And()는 두 인수를 모두 묶어야 합니다. And()가 참이 되려면 두 인수가 모두 참이어야 합니다.
이것은 작동합니다:
각 행에 대해 ( 선택된 ( 행 상태 () ) = 그리고 ( 또는 ( 포함 ( : 이름 , "넥타이" ) , 포함 ( : 이름 , "OBER" )) , 포함 ( : 섹스 , "에프" ))) ;
Re: 여러 기준에 따라 행을 선택하는 방법은 무엇입니까?안녕하세요, 이 답변은 정말 도움이 되었습니다. 이제 다른 열의 값에 대한 조건을 추가하려면 name="KATIE" 및 "ROBERT"(또는 "ATIE"를 포함하는 것이 더 좋음) AND sex="F"를 선택한다고 가정해 보겠습니다. 그런 다음 Or- 조건과 and 조건을 결합해야 합니다.
dt = 열려 있는 ( "$SAMPLE_DATA/빅 클래스.jmp" ) ;
각 행에 대해 ( 선택된 ( 행 상태 () ) = 또는 ( 포함 ( : 이름 , "넥타이" ) , 포함 ( : 이름 , "OBER" )) 그리고 (포함(:sex, "F" ))) ;
나는 이미 이와 같은 것을 했지만 성공하지 못했습니다.
문안 인사
폴
(PS 분명히 저는 Base SAS를 많이 사용했습니다. 이제 나는 이런 식으로 테이블에 대한 선택을 구현하려고 합니다. 도와 주셔서 감사합니다.)
Re: 여러 기준에 따라 행을 선택하는 방법은 무엇입니까?일치시킬 문자열이 많으면 긴 OR() 절을 구성하는 대신 목록을 사용하고 싶을 것입니다. 그러나 Contain()은 목록(문자열)에서 하위 문자열을 찾을 수 없습니다. 그런 다음 목록에 대한 루프가 필요합니다. 예는 다음과 같습니다.
dt = 열려 있는 ( "$SAMPLE_DATA/빅 클래스.jmp" ) ;
명부 = { "넥타이" , "이세" , "클라이" , "WWW" } ;
N = N개 품목 ( 명부 ) ;
각 행에 대해 (
을 위한 ( 나 = 1 , 나 <= N , 나 ++,
만약에 ( ( s_flag = 포함 ( : 이름 [] , 명부 [ 나 ] )) > 0 ,
부서지다 ()
)
) ;
선택된 ( 행 상태 () ) = s_flag ;
) ;
Re: 여러 기준에 따라 행을 선택하는 방법은 무엇입니까?동일한 원리:
dt = 열려 있는 ( "$SAMPLE_DATA/빅 클래스.jmp" ) ;
각 행에 대해 ( 선택된 ( 행 상태 () ) = 또는 ( 포함 ( : 이름 , "넥타이" ) , 포함 ( : 이름 , "이세" )) ) ;
// 아니면 대안으로
dt << 위치를 선택하세요 ( 또는 ( 포함 ( : 이름 , "넥타이" ) , 포함 ( : 이름 , "이세" )) ) ;
Re: 여러 기준에 따라 행을 선택하는 방법은 무엇입니까?하지만 'Contains'를 추가로 사용하여 문자열의 일부에서만 문자열을 일치시키려면 어떻게 해야 합니까? "ATIE"와 "ISE"를 좋아하시나요? 감사합니다 폴
Re: 여러 기준에 따라 행을 선택하는 방법은 무엇입니까?Or()를 사용하세요:
dt = 열려 있는 ( "$SAMPLE_DATA/빅 클래스.jmp" ) ;
각 행에 대해 ( 선택된 ( 행 상태 () ) = 또는 ( 이름 == "케이티" , 이름 == "루이스" ) ) ;
// 아니면 대안으로
dt << 위치를 선택하세요 ( 또는 ( 이름 == "케이티" , 이름 == "루이스" ) ) ;