BookmarkSubscribeRSS Feed

[SAS 프로그래밍] 데이터의 개체 수(Number of observations) 계산하기

Started ‎06-17-2020 by
Modified ‎06-17-2020 by
Views 1,079

안녕하세요이번시간에는 데이터셋의 개체 수를 알 수 있는 방법에 대해 알아보겠습니다.

 

 

 

사용할 데이터 셋은 SASHELP 라이브러리에 있는 COMET 데이터 셋입니다.

 

 

Easy method

데이터셋의 개체수를 나타내는 가장 쉬운 방법 PROC SQL COUNT함수를 사용하는 것입니다예를 들어 다음과 같은 PROC SQL문에서 COUNT함수로 변수 N에 모든 행의 개수를 저장할 수 있습니다.

 

다운로드 - 2020-06-18T112524.978.png

 

다운로드 - 2020-06-18T112526.208.png

 

그리고 만약 매크로변수에 저장하고 싶다면 다음과 같이 as N into N:으로 변경하면 N이라는 매크로변수에 저장됩니다결과는 로그창을 통해 확인하였습니다.

 

다운로드 - 2020-06-18T112527.522.png

 

다운로드 - 2020-06-18T112528.729.png

 

하지만 이 방법은 메타데이터를 활용하지 않고 데이터 셋의 전체 행을 하나하나 읽는 과정을 거치기 때문에 효율적이지 않고 시간도 비교적 오래 걸리는 단점이 있습니다.

 

Metadata

 메타데이터를 활용하면 보다 효율적으로 개체 수를 구할 수 있습니다메타데이터를 활용하는첫번째 방법은Descriptor portion을 이용하는 것입니다. Sas dataset의 구조를 이루는 Descriptor portion Data portion 중 자료값이 아닌 dataset의 이름변수나 개체의 수 등으로 구성된 Descriptor portion을 활용하는 것입니다이 방법은 dataset 안에서 검색을 하는 것이 아닌 메타데이터를 사용하는 것이기 때문에 효율적인 방법입니다다음과 같은 SET문에서 데이터셋의 행의 수를 나타내는 자동변수 NOBS를 사용하여 변수N에 개체 수를 저장하였습니다.

 

다운로드 - 2020-06-18T112529.969.png

 

다운로드 - 2020-06-18T112531.129.png

 

그리고 만약 매크로변수에 저장하고 싶다면 아래와 같이 call symputx 문을 추가하면 됩니다.

 

다운로드 - 2020-06-18T112532.337.png

 

 

 

Dictionary table

메타데이터를 활용하는 또 다른 방법은 SAS라이브러리데이터세트매크로시스템옵션 등에 대한 정보를 생성하고  관리하는 Dictionary table 이라는 읽기 전용 테이블 모음을 활용 하는 것입니다.

 

 

다운로드 - 2020-06-18T112533.657.png

 

다운로드 - 2020-06-18T112534.946.png

 

Proc SQL문을 통해 사전테이블을 사용할 수 있으며, where절에서 libname옵션은 데이터가 저장된 라이브러리를 memname옵션은 데이터셋을 지정할 수 있습니다.

 

 

 

Macro.

개체 수를 알고자 하는 데이터셋이 많을 때는 매크로를 이용하는 것이 편리합니다다음은 sas function macro function으로 이용 할 때 쓰이는 %SYSFUNC을 사용하여 개체 수를 구하는 방법입니다. Sashelp.comet데이터 외에 Sashelp.bei데이터과 Sashelp.cars데이터의 개체수도 함께 구해보았습니다.

 

다운로드 - 2020-06-18T112536.448.png

 

다운로드 - 2020-06-18T112537.849.png

 

 

Open함수는 데이터를 여는데 사용하고 Attrn 함수는 데이터셋의 숫자 속성값을 반환하는데 nobs옵션과 같이 쓰이면 개체 수를 반환하게 됩니다그리고 Close함수를 사용하여 Open한 데이터 셋을 닫을 수 있습니다.

 

 

 

 

마치며

오늘은 데이터셋의 개체 수를 알아보는 법에 대해 알아보았습니다개체수가 적은 데이터는 PROC SQL문을 사용하여 COUNT함수로 데이터 전체를 직접 검색해도 무방하지만 개체수가 많은 데이터의 경우 연산량의 문제 때문에 메타데이터를 사용하여 개체수를 알아내는 것이 효율적인 방법입니다.

 

 

 

Reference

http://www.listendata.com/2017/04/number-of-observations-in-sas-data.html

 

Version history
Last update:
‎06-17-2020 10:36 PM
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