하위 집합 생성에 대해 자세히 알아보기안녕하세요. 올해 5월에 올라온 https://communities.sas.com/message/166376#166376 포스팅을 참고하고 있습니다.
이 예에서는 1) 먼저 데이터 필터를 추가하고 2) 하위 집합을 적용하여 새 데이터 테이블을 생성하는 방법을 설명합니다.
dt = 개방형(BigClass);
dt << 데이터 필터(필터 추가(열(:age),where(:age=={12,13}), 모드(select(1))));
하위1 = dt<
결과적으로 "regions"라는 데이터 테이블이 생성됩니다. 예상대로.
나는 내 자신의 데이터 세트(BigClass 예제가 작동합니다!!)를 사용하여 비슷한 예제를 만들었지만 나에게는 잘 작동하지 않습니다. 제가 뭔가 오해를 하고 있는 것 같네요. 여기에 내 프로그램 흐름이 첨부되어 있습니다.
BigClass 예제와 내 예제의 차이점은 전체 스크립트를 실행할 때 데이터 필터가 선택되지 않는다는 것입니다. (특정 이름이 포함된 원본 코드를 보내드리기 위해 Excel 파일에서 파일을 로드하는 과정을 생략했습니다.) 설명하자면, 열의 텍스트가 "d" 또는 "I"로 시작하는 행만 선택하려는 문자 열이 있습니다. 데이터 필터를 수행할 새 열을 만들어야 한다는 것을 알았습니다. 코드를 전체적으로 실행하면 행이 선택되지 않고 하위 집합 데이터 테이블이 생성되지 않습니다. 새 열 Onelettet이 생성될 때까지 코드를 먼저 실행한 다음 데이터 필터를 실행하면 필터가 생성되고 행이 선택됩니다. 그리고 마지막으로 하위 집합 데이터 테이블이 생성됩니다. 하지만 이러한 일은 스크립트가 실행되는 방식에 관계없이 발생해야 합니까? 또는?
이는 스크립팅 사용의 기본이므로 이러한 미묘함을 깊이 이해해야 합니다.
문안 인사
폴
Re: 하위 집합 생성에 대한 추가 정보MS의 예제 코드를 사용하면 선택한 상태로 전환하기 위해 데이터 테이블의 행이 필요하지 않기 때문에 매우 강력한 직접 솔루션이 있습니다.
dt = 새 테이블 ( "테스트" ,
행 추가 ( 5 ) ,
새 열 ( "Instr" , 문자 ,
값 설정 ( { "드럼" , "트럼펫" , "거문고" , "클라리넷" , "디제리두" } )
)
);
sel = dt << 행 가져오기 where ( Starts With ( : instr , "d" ) | Starts With ( : instr , "l" ) ) ;
dt << subset ( 출력 테이블 이름 ( "sel instr" ) , 행 ( sel ) , 선택한 열 ( 0 ) ) ;
Re: 하위 집합 생성에 대한 추가 정보참조를 제공한 경우 데이터 필터를 닫는 것은 간단합니다.
df = dt << 데이터 필터 ( ... ) ;
df << 닫다 ;
Re: 하위 집합 생성에 대한 추가 정보안녕 MS,
대기() 추가; 수식 평가 후 하위 집합 명령이 실행되기 전에 필터가 설정되지 않는 문제를 해결합니다. 감사합니다.
필터창을 닫는 명령어는 무엇인가요? 하위 집합 이후에 화면에 계속 표시되는 것을 원하지 않습니다. 나는 단지 데이터 세트를 원합니다. 사실 전혀 볼 필요가 없어요.
그리고 네, 저는 선택이 하나의 진술로 이루어질 수 있다고 생각했습니다. 단지 그것을하는 방법을 몰랐습니다.
감사합니다
폴
Re: 하위 집합 생성에 대한 추가 정보코드를 테스트하기 위한 테이블이 없으면 특정 경우에 작동하지 않는 이유를 말하기가 어렵습니다. 코드가 동일한 스크립트에서 생성된 열 수식에 의존하는 경우 수식 평가가 스크립트 실행보다 늦어져 예기치 않은 결과가 발생할 수 있다는 것을 경험했습니다. 이를 방지하려면 중요한 단계에서 Wait() 또는 << 평가 공식을 삽입해 보세요.
그러나 이 특별한 경우에 올바르게 이해하면 새 열(또는 데이터 필터)이 필요하지 않습니다. 아마도 아래 예가 도움이 될 수 있습니다.
//예제 테이블
dt = 새 테이블 ( "테스트" ,
행 추가 ( 5 ) ,
새 열 ( "Instr" , 문자 ,
값 설정 ( { "드럼" , "트럼펫" , "거문고" , "클라리넷" , "디제리두" } )
)
);
// 데이터 필터를 사용하여 d 또는 l로 시작하는 instr을 선택합니다.
sel = dt << 행 가져오기 where ( Starts With ( : instr , "d" ) | Starts With ( : instr , "l" ) ) ;
dt << 데이터 필터 (
필터 추가 ( 열 ( : instr )) , 여기서 ( : instr = : instr [ sel ] ) , 모드 ( 선택 ( 1 ) ) )
);
dt << subset ( 출력 테이블 이름 ( "sel instr" ) , 선택한 행 ( 1 ) , 선택한 열 ( 0 ) ) ;
// 또는 데이터 필터 없이 보다 직접적인 접근 방식
dt << select where ( 다음으로 시작 ( : instr , "d" ) | 다음으로 시작 ( : instr , "l" ) ) ;
dt << subset ( 출력 테이블 이름 ( "sel instr" ) , 선택한 행 ( 1 ) , 선택한 열 ( 0 ) ) ;