BookmarkSubscribeRSS Feed

[SAS 고급] 번호로 관측치 접근하기(계통추출법) (Accessing Observations by Number)

Started ‎06-17-2020 by
Modified ‎06-17-2020 by
Views 87

[SAS 고급번호로 관측치 접근하기(계통추출법) (Accessing Observations by Number)  

 

 

안녕하세요 ^^

 

 

 

지난 시간에는 관측치에 접근하는 방식을 살펴보았는데요,

 

이번 시간은 번호를 사용하여 관측치에 접근해 보겠습니다.

 

 

 

▶ 이번 시간의 목표는 다음과 같습니다.

 

▷ 번호(숫자)로 관측치를 검색하기 위해 DATA step 사용하기

 

▷ 계통추출표본(systematic sample)을 생성하기 위해 DATA step 사용하기

 

 

 

▶ 시나리오: 마케팅부서는 일부 고객 대상에게 만족도 설문지를 보내고 싶어합니다.

그 고객들은 전체 SAS DATA SET을 모두 읽지 않고 계통 추출기술(systematic sampling technique)을 사용하여 선택될 것입니다.

 

SE22017031822454170.jpg

 

 

▷ 계통 표본(systematic sample) 규칙적인 간격으로 선택된 관측치 포함하는 표본입니다.

 

SE22017031822462270.jpg

 

 

▷ NOBS= 옵션은 SAS 데이터셋에 있는 관측 수를 임시 변수에 할당합니다.

아래 프로그램을 보면 set statement내에서 nobs 옵션을 사용하여 TotObs라는 임시변수에 관측수 값을 할당한 것을 확인할 수 있습니다.

 

SE22017031822465170.jpg

 

 

 POINT= 옵션은 임시 변수를 지정하는데이 임시 변수의 숫자 값은 어떤 관측치를 읽을 것인지를 결정합니다.

아래 프로그램을 살펴보면 set statement내에서 point 옵션을 사용하여번호(숫자)값을 갖는 PickIt이라는 임시변수를 생성한 것을 볼 수 있습니다.

 

SE22017031822470870.jpg

 

 

▷ STOP(중지) Statement DATA step 연속적인 처리를 방지합니다.

 

SE22017031822474470.jpg

 

 

 

▶ 위 프로그램을 바탕으로, 같은 간격으로 샘플을 추출하는 과정을 보겠습니다.

  

SE22017031822473270.jpg

 

SE22017031822580370.jpg

 

프로그램을 실행하면 가장 먼저 nobs옵션이 실행되어 Totobs변수에 관측치 수 617을 할당하게 됩니다. 

 

 

SE22017031822585770.jpg

 

SE22017031822591370.jpg

 

SE22017031822592670.jpg

 

다음으로 Do문이 실행되어 관측번호를 나타내는 PickIt 변수에 1이 할당됩니다.

이후 PickIt 변수값은 1부터 617(관측치수)까지 50간격으로 할당될 것입니다. 

 

 

SE22017031822594270.jpg

 

SE22017031822595570.jpg

 

SE22017031823000770.jpg

 

PickIt 변수에 1이 할당되면 관측번호가 1인 자료를 찾아가 4(customerID, EmployeeID, streetID, OrderID)의 변수 값을 가져옵니다. 

 

 

SE22017031823002270.jpg

 

SE22017031823004570.jpg

 

SE22017031823010570.jpg

 

4개의 값을 가져온 후, output문장이 실행됩니다현재 PDV의 자료를 결과로 내보냅니다. 

 

 

SE22017031823012070.jpg

 

SE22017031823013470.jpg

 

SE22017031823015070.jpg

 

output문장이 실행된 다음 end문장이 실행되어, PickIt 변수값에 51(=1+50)값이 할당됩니다. 

 

 

SE22017031823021070.jpg

 

SE22017031823022970.jpg

 

SE22017031823031570.jpg

 

end문장에서 PickIt 변수값이 51로 할당되면, do문으로 되돌아갑니다.

 

 

SE22017031823034070.jpg

 

SE22017031823035370.jpg

 

SE22017031823042070.jpg

 

관측번호가 51인 자료를 찾아가 4(customerID, EmployeeID, streetID, OrderID)의 변수 값을 가져옵니다. 

 

 

SE22017031823044170.jpg

 

SE22017031823045470.jpg

 

SE22017031823052370.jpg

 

다음으로 output문장이 실행되어 현재 PDV의 자료를 결과로 내보냅니다. 

 

 

SE22017031823053970.jpg

 

SE22017031823055270.jpg

 

SE22017031823060570.jpg

 

문장이 실행된 다음 end문장이 실행되어, PickIt 변수값에 101(=51+50)값이 할당됩니다. 

 

 

SE22017031823062370.jpg

 

SE22017031823063570.jpg

 

SE22017031823065570.jpg

 

end문장에서 PickIt 변수값이 101로 할당되면, 앞의 과정이 반복됩니다.

PickIt 변수값이 651일 때를 살펴보겠습니다.

end문장이 실행되어 PickIt 변수값이 651로 할당되고 do문으로 되돌아갑니다.

이때 651값은 전체 관측수인 617을 넘기 때문에 do문은 멈추고 do; end; 밖으로 나오게 됩니다. 

 

 

SE22017031823073470.jpg

 

SE22017031823075070.jpg

 

SE22017031823080470.jpg

 

stop문이 실행되어 프로그램의 연속적인 처리를 멈춥니다. 

 

 

 

 

SE22017031823082470.jpg

 

Output 결과의 일부분을 확인해보면, 첫 번째 관측치부터 50간격으로 자료가 추출된 것을 알 수 있습니다.

 

 

감사합니다 ^^

 

Version history
Last update:
‎06-17-2020 02:17 AM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags