[SAS 고급] DATA Step Hiter Object (2)
안녕하세요^^
이번 시간에는 지난시간에 이어 SAS Data Step의 Hiter Object를 사용하는 방법에 대해 살펴보겠습니다.
지난 시간 간단한 코드를 통해 해시 반복기 객체를 사용하여 해시 객체 데이터를 검색하는 네 가지 방법에 대해 살펴보았습니다.
이번 시간에는 예제를 통해, Hiter object의 사용 방법과 과정에 대해 살펴보겠습니다. .
▶ 비즈니스 시나리오를 살펴보도록 하겠습니다.
▷ 마케팅 부서에서는 가장 비싼 물건과 두 명의 고객과 가장 저렴한 물건을 주문한 두 명의 고객을 파악하려고 합니다.
▷ 해시 반복기 객체는 이러한 4명의 고객을 효율적으로 찾기 위해, 오름차순 또는 내림차순으로 해시 객체 데이터를 검색할 수 있습니다.
▷ 다음과 같은 코드로 data step에서 Hiter object를 사용할 수 있습니다.
▷ 해시객체는 순서가 정렬되지 않았기 때문에 주의해야 합니다.
▷ 그에 비해, 해시객체의 순서를 ‘descending’으로 지정하였기 때문에, Hiter object의 뷰(view)는 내림차순으로 정렬됩니다.
▷ work.top에 현재의 관측값을 출력합니다. 즉, c.first();로 첫 번째 데이터 값이 출력됩니다.
▷ c.next();로 다음 데이터 값으로 이동합니다.
▷ end;를 만나면 i=1의 값에서 i=2의 값으로 바뀝니다.
▷ work.top에 현재의 관측값을 출력합니다. 즉, 두 번째 관측값을 출력합니다.
▷ c.next();로 다음 데이터 값으로 이동합니다
▷ end;를 만나면 i=2의 값에서 i=3의 값으로 바뀝니다.
▷ do 문장의 조건을 만족하지 않기 때문에, Do loop에서 빠져나옵니다.
▷ c.last();에 의해 마지막 데이터 값으로 이동하며, work.bottom에 현재의 값을 출력합니다.
▷ c.prev();에 의해 데이터 항목을 역순으로 반환합니다.
▷ end;를 만나면 i=1의 값에서 i=2의 값으로 바뀝니다.
▷ work.bottom에 현재의 관측값을 출력합니다. 즉, 두 번째 관측값을 출력합니다.
▷ c.prev();에 의해 데이터 항목을 역순으로 반환합니다.
▷ end;를 만나면 i=2의 값에서 i=3의 값으로 바뀝니다.
▷ do 문장의 조건을 만족하지 않기 때문에, Do loop에서 빠져나옵니다.
▷ STOP 문장은 로그창에 “NOTE: DATA step stopped due to looping.” note가 나타나지 않게 합니다.
이상으로 예제를 통해 해시 객체 데이터를 검색하는 네 가지 방법을 어떻게 사용하고, 어떤 논리에 의해 실행되는지 살펴보았습니다.
감사합니다^^
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.