BookmarkSubscribeRSS Feed

[SAS 프로그래밍] 데이터 셋 비교하기

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

 

 [SAS 프로그래밍] 데이터 셋 비교하기

 

 

안녕하세요^^

 

이번 시간에는 다른 두 데이터 셋을 비교하는 방법에 대해 알아보겠습니다.

갖고 있는 정보 데이터가 새로 업데이트 되는 경우에, 업데이트 된 부분을 확인할 때 유용하게 사용할 수 있습니다.

 

 

 

▶ 예제데이터

 먼저 예제 데이터로 사용할 데이터 셋은 아래와 같습니다. SASUSER의 CREDIT 데이터를 수정하여 사용하였습니다.

 

14ni90aAo_P7PEDK5fIPLDxlVmz2BnIAAAAASUVORK5CYII_.png

 

8DyRnjBbfLYiAAAAAASUVORK5CYII_.png

 

============================================================

 

 

MszXgdIYQQj83VTsccDpzFiMMwPdPNOSMhhBCPx5XTwU5nxNkIIYQQNfRMRwghxDT09poQQohpDDkdPacRQggxQpPT8S8FIPz99z.png

 

D_c_Te2A8xrpQAAAABJRU5ErkJggg__.png

 

 

• 두 데이터 셋에서 공통으로 사용되는 변수는 4개 이고, 이 중에 Type 변수나 Transaction 변수가 달라지는 행이 총 5개 존재합니다.

 

 • 이 두 데이터 셋에서 업데이트 된 행만 확인해 보도록 하겠습니다.

 

 

 

 

 

 

▶ DATA STEP 사용하기; merge statement

 

tBZyumznAAAAAElFTkSuQmCC.png

 

wOxjoJD8KlajgAAAABJRU5ErkJggg__.png

 

 

▷ coding

 

• 먼저 proc sort를 사용하여 두 데이터 셋을 account, name, type, transaction 기준으로 정렬해줍니다.

 

 • Type과, transaction 두 변수 중 하나라도 달라진 값을 출력하고자 하기 때문에

    정렬기준 변수에 type과 transaction을 동시에 넣어주어야 합니다.

 

• 따라서 위의 코드에서는 정렬하기 위해 4개 변수를 모두 사용하였지만, type과 transaction만 사용할 수도 있습니다.

 

• 다음으로 data에서 merge문을 사용합니다.

 

• merge의 in옵션을 사용하여 기존의 count데이터(old_count)를 in1으로 지정하고

  업데이트된 count데이터( new_count)를 in2로 지정하였습니다.

 

• by문에는 정렬할 때 사용했던 변수들을 지정해줍니다.

 

• if문을 사용하여 in1에는 없고(in1=0) in2에만 있는(in2=1) 데이터를 추출합니다.

 

 

 

▷ 결과

 

 old_count에서 업데이트 되어 new_count에서 달라진 행만을 추출하게 됩니다

 

 

 

 

 

 

 PROC SQL 사용하기

 

yQYNnRuLEYiAAAAAElFTkSuQmCC.png

 

M5AbnGVfxO0AAAAASUVORK5CYII_.png

 

 

▷ coding

 

• 첫 번째 select문과 두 번째 select문을 활용하여서 new_count 데이터에 있는 모든 변수와 old_count에 있는 모든 변수를 불러오는 코드를 써줍니다.

 

• 두 select문 사이의 except를 사용하여 new_count에 있는 데이터 중, 두 번째 old_count에 있는 데이터와 동일한 경우는 제외하게 됩니다.

 

 

 

▷ 결과

 

new_count에 있는 새로운 데이터만 출력할 수 있습니다.

 

 

 

 

 

 

▶ PROC COMPARE 사용하기

 

A15c6N06XjepAAAAAElFTkSuQmCC.png

 

7l3xHvtBOVAAAAAElFTkSuQmCC.png

 

 

AesBWMWjPwPyAAAAAElFTkSuQmCC.png

 

 

sJu5T_pLzKAAAAAElFTkSuQmCC.png

 

 

▷ coding

 

• base의 데이터셋은 old_count데이터를 사용하고, 비교할 데이터셋 compare에는 new_count를 지정합니다.

 

• var문에 두 데이터 셋에서 비교하고 싶은 변수들을 지정해 줍니다.

 

 

 

▷ 결과

 

• 결과는 위와 같이 요약정리된 내용으로도 출력되고, 각각의 변수에서 어떤 값들이 달라졌는지 출력하여 보여줍니다.

 

• type변수에서는 총 4개의 값이 달라졌고, transaction변수에서는 총 5개 값이 달라졌음을 확인할 수 있습니다.

 

이 때, 주의해야하는 사항이 있습니다.

 

• 이 프로세스는 라인별로 값을 비교하기 때문에 proc sort를 하여 지정을 해주어야 하는 부분입니다.

  ​만약 sort를 하지 않으면 같은 데이터인데 행의 위치만 달라지게 되어도 다른값으로 카운트 되어 결과에 출력 됩니다

 

• 마찬가지의 이유로, 중간에 새로운 행이 추가된다면 새로운 행을 제외한 아래 행들은 모두 같은 값을 같더라도 다른 값으로 인식되어 출력되게 됩니다.

 

 

 

 

 

 

 

이상으로 데이터 셋을 비교하는 방법에 대해 알아보았습니다..

감사합니다. ^^

 

 

[출처]

http://support.sas.com/documentation/cdl/en/sqlproc/63043/HTML/default/viewer.htm#p013svopzf5egyn19d...

Version history
Last update:
‎06-17-2020 10:22 PM
Updated by:
Contributors

sas-innovate-white.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.

 

Early bird rate extended! Save $200 when you sign up by March 31.

Register now!

Article Labels
Article Tags