[SAS 고급] 번호로 관측치 접근하기(계통추출법) (Accessing Observations by Number)
안녕하세요 ^^
지난 시간에는 관측치에 접근하는 방식을 살펴보았는데요,
이번 시간은 번호를 사용하여 관측치에 접근해 보겠습니다.
▶ 이번 시간의 목표는 다음과 같습니다.
▷ 번호(숫자)로 관측치를 검색하기 위해 DATA step 사용하기
▷ 계통추출표본(systematic sample)을 생성하기 위해 DATA step 사용하기
▶ 시나리오: 마케팅부서는 일부 고객 대상에게 만족도 설문지를 보내고 싶어합니다.
그 고객들은 전체 SAS DATA SET을 모두 읽지 않고 계통 추출기술(systematic sampling technique)을 사용하여 선택될 것입니다.
▷ 계통 표본(systematic sample)은 규칙적인 간격으로 선택된 관측치를 포함하는 표본입니다.
▷ NOBS= 옵션은 SAS 데이터셋에 있는 관측 수를 임시 변수에 할당합니다.
- 아래 프로그램을 보면 set statement내에서 nobs 옵션을 사용하여 TotObs라는 임시변수에 관측수 값을 할당한 것을 확인할 수 있습니다.
▷ POINT= 옵션은 임시 변수를 지정하는데, 이 임시 변수의 숫자 값은 어떤 관측치를 읽을 것인지를 결정합니다.
- 아래 프로그램을 살펴보면 set statement내에서 point 옵션을 사용하여, 번호(숫자)값을 갖는 PickIt이라는 임시변수를 생성한 것을 볼 수 있습니다.
▷ STOP(중지) Statement는 DATA step의 연속적인 처리를 방지합니다.
▶ 위 프로그램을 바탕으로, 같은 간격으로 샘플을 추출하는 과정을 보겠습니다.
프로그램을 실행하면 가장 먼저 nobs옵션이 실행되어 Totobs변수에 관측치 수 617을 할당하게 됩니다.
다음으로 Do문이 실행되어 관측번호를 나타내는 PickIt 변수에 1이 할당됩니다.
이후 PickIt 변수값은 1부터 617(관측치수)까지 50간격으로 할당될 것입니다.
PickIt 변수에 1이 할당되면 관측번호가 1인 자료를 찾아가 4개(customerID, EmployeeID, streetID, OrderID)의 변수 값을 가져옵니다.
4개의 값을 가져온 후, output문장이 실행됩니다. 현재 PDV의 자료를 결과로 내보냅니다.
output문장이 실행된 다음 end문장이 실행되어, PickIt 변수값에 51(=1+50)값이 할당됩니다.
end문장에서 PickIt 변수값이 51로 할당되면, do문으로 되돌아갑니다.
관측번호가 51인 자료를 찾아가 4개(customerID, EmployeeID, streetID, OrderID)의 변수 값을 가져옵니다.
다음으로 output문장이 실행되어 현재 PDV의 자료를 결과로 내보냅니다.
문장이 실행된 다음 end문장이 실행되어, PickIt 변수값에 101(=51+50)값이 할당됩니다.
end문장에서 PickIt 변수값이 101로 할당되면, 앞의 과정이 반복됩니다.
PickIt 변수값이 651일 때를 살펴보겠습니다.
end문장이 실행되어 PickIt 변수값이 651로 할당되고 do문으로 되돌아갑니다.
이때 651값은 전체 관측수인 617을 넘기 때문에 do문은 멈추고 do; end; 밖으로 나오게 됩니다.
stop문이 실행되어 프로그램의 연속적인 처리를 멈춥니다.
Output 결과의 일부분을 확인해보면, 첫 번째 관측치부터 50간격으로 자료가 추출된 것을 알 수 있습니다.
감사합니다 ^^
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.