[SAS 고급] 다차원 배열: 예시 (Multidimensional Arrays: Example)
안녕하세요^^
이번 시간에는 lookup 테이블로써 다차원 배열을 사용하는 예시를 살펴보도록 하겠습니다.
▶ 비즈니스 시나리오는 다음과 같습니다.
▷ 각 ‘오리온 스타(Orion Star)’ 회사의 “실제 이익”을 “예산 이익”과 비교하는 작업을 해보겠습니다.
▷ 사용할 SAS 데이터셋 orion.profit에는 2007년에서 2011년까지의 데이터가 월 단위(YYMM변수)로 구분되어 있습니다.
- 아래 데이터셋은 사용할 SAS 데이터 세트의 일부입니다.
▷ lookup 테이블로 사용할 자료
- 아래 표에는 각 ‘연도’와 ‘월’에 대한 “예산 금액”이 들어 있습니다.
- 각 행은 ‘월’을 나타내고 각 열은 ‘연도’를 나타냅니다.
▷ 우리는 Lookup 테이블의 “예산 금액”을 SAS 데이터셋(orion.profit)의 “실제 금액(profit변수)”과 결합할 것입니다.
▶ 그럼, Lookup 테이블로 사용할 다차원 배열을 고려해보겠습니다.
▷ 예를 들어, 아래 표처럼 우리는 ‘Logistics’회사의 2007년도 1월(YYMM변수)을 기준으로, 예산표에서 2007년 1월에 해당하는 예산 금액 1,590,000달러 값을 가져올 것입니다.
▷ “실제 이익”을 “예산 이익”과 비교하는 작업을 위한 프로그램은 다음과 같습니다.
- 여기서 중요한 점은 예산자료는 SAS 데이터셋으로 존재하지 않는다는 점입니다.(즉, 예산표는 서류로만 갖고 있다고 가정합니다.)
- 따라서 아래 프로그램의 음영부분처럼, 2행 5열(5개년도 2개월 예산금액) 형태의 배열을 생성하여 활용할 것입니다.
▶ 프로그램의 실행 과정을 살펴보도록 하겠습니다.
▷ 제일 먼저 data문이 실행됩니다.
- 실행 전 단계인 컴파일 단계에서, 2행 5열 B배열에 10개 값이 이미 할당되어 있는 것을 확인할 수 있습니다.
- budgetamt 데이터셋에 포함하지 않을 변수들을 표시해둡니다. 또한 관측번호를 나타내는 _N_값은 1이 입력됩니다.
▷ 다음으로는 set문이 실행됩니다.
- 옵션으로, profit 데이터셋에서 Sales변수 값이 있는 상위 두 개의 관측치만을 가져오도록 지정한 것을 알 수 있습니다.
- B 배열 값들은 변동 없이 그대로 있습니다.
- profit 데이터셋의 첫 번째 자료를 읽어왔습니다.
▷ 이어, Y변수와 M변수을 생성합니다.
- YYMM변수에 대해 year함수와 month함수를 사용하여 연도와 월을 추출합니다.
- B 배열 값들은 여전히 그대로 있습니다.
- Y변수와 M변수(연도와 월)는 각각 2007, 1의 값을 할당 받은 것을 확인할 수 있습니다.
▷ 다음으로는 BudgetAmt변수가 생성됩니다.
- B배열의 (1, 2007)자리에 있는 값을 가져와 BudgetAmt값으로 할당합니다.
- 이후, run;이 실행되어 PDV에 있는 결과가 반출(output)됩니다.
▷ 그리고 위와 같은 과정이 반복되어, profit자료의 두 번째 행에 대해 B배열의 (2, 2007)자리값이 BudgetAmt변수값에 할당됩니다.
감사합니다 ^^
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!