오늘 알아볼 옵션은 9글자만 추가 입력하면 엄청난 노가다 작업을 한번에 해결 할 수 있는 유용한 옵션이다.

 

데이터에서 sas를 이용해 표본을 추출하는 경우에 proc surveyselect 라는 명령문을 사용한다.

 

몇건을 뽑을지 지정 할수도 있고, 그룹별로 몇건씩 혹은 비율을 이용하여 추출하는 등 여러가지 방법으로 추출할 수가 있는데 이해도를 높이고자 간단한 예를 통해서 알아보도록 하자.

 

먼저 대용량이든 저용량이든 임의의 규모의 데이터가 있다.

 

그룹별로 10건씩 데이터를 추출 할 것인데, 실무데이터에서는 여러가지 경우의 수가 생기고, 실제 한 그룹에 모집단 데이터가 10건이 안되는 경우도 있을 수가 있다.

 

예를 들어 그룹별로 단순무작위추출방법(SRS)을 이용해 10건씩 추출할 경우

 

코딩예시

 

proc sort data=a; by group; run;

 

proc surveyselect data=a method=srs n=10 out=a1;

strata group;

run;

 

위와 같이 확장편집기에 코딩을 한 뒤 실행을 하면 모든 그룹별 데이터 갯수가 10건이상인 경우 제대로 실행이 된다.

하지만 한그룹이라도 데이터가 10건이 되지 않는 경우에는 실행이 중지되면서 로그창을 보면 아래와 같은 에러문과 함께 경고문이 함께 뜨면서 스텝이 중단된다.

 

로그창

ERROR : The sample size, 10, is larger then the number of sampling units, 5.

 

10건씩 뽑아내는데 한 그룹이 5건밖에 되지 않는 경우이다. 로그창에는 어떤 그룹이 위와 같은 에러를 나타내는지 그룹명 또한 추가적으로 나타내 준다.

 

이럴 경우 10건이 되지 않는 경우를 모두 따로 뽑아낸뒤에 나머지 데이터는 조건을 만족하니깐 위와 같은 코딩을 이용해 따로 추출한 뒤 붙이는 작업을 해도 무방하다. 하지만 매우 번거롭다.

 

위의 코딩에서 옵션에 9글자만 더 추가하면 지정한 10건 미만의 데이터들은 자동적으로 모두 추출하겠다라는 명령을 내릴수 있다.

 

우리의 최종 가정은 그룹별로 단순무작위추출방법을 사용해 10건씩 뽑아내는데 만약 그룹에 속하는 데이터가 10건이 되지 않는 경우는 모두 추출한다이다.

 

proc sort data=a; by group; run;

 

proc surveyselect data=a method=srs n=10 selectall out=a1;

strata group;

run;

 

같은 명령문에 selectall이라는 옵션만 추가적으로 입력해주면 위와 같은 가정을 만족하는 데이터를 추출할 수가 있다. 추가적으로 코딩을 설명한다면 proc sort 문은 group라는 변수를 기준으로 오름차순 정렬한다는 뜻이며, proc surveyselect는 표본을 추출하는데 데이터는 a라는 데이터를 사용하며, 방법은 단순무작위추출방법인 srs를 이용하고, 건수는 10건씩 selectall은 지정한 건수가 만족되지 않을시에는 모두 추출하며, 그 결과는 a1이라는 데이터셋을 만들어 저장한다. 앞의 모든 조건은 group이라는 변수를 기준으로 실행한다는 뜻이다.

 

selectall옵션을 사용하면 이전과 같이 에러문과 경고문은 로그창에 나타나지 않는다.

그리고 아래와 같은 문장이 나타나며 추가적인 정보를 준다.

 

The sample size, 10, is larger than the number of sampling units, 5. The SELECTALL option includes all units in the sample. 

 

그룹별 10건이 안되는 경우는 데이터를 모두 추출하였고, 10건이 안되는 경우에 해당하는 그룹명은

로그창에 아래와 같은 설명과 함께 추가적으로 그룹명들을 나타내 준다.

 

The above message was for the following stratum.

 

www.sasbigdata.com 김 진 휘