로그인   |  회원가입  |  사이트맵  |  Contact Us
  아이디 저장하기
 
홈 > SAS Tech & Tip > SAS Programming 활용하기
[SAS 프로그래밍] 데이터 셋 비교하기 2017.11.20
MYSAS 시샵 73 0
http://www.mysas.co.kr/sas_tiptech/a_question.asp?b_no=7527&cmd=content&bd_no=5

 

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

 

 

안녕하세요^^

 

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

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

 

 

 

▶ 예제데이터

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

 

 

 

 

 

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

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

 

 

 

 

DATA STEP 사용하기; merge statement

 

 

 coding


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

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

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

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



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

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

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

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

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

  

 ▷ 결과

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

 

 

 

 

 

 

PROC SQL 사용하기

 

 

 coding

 

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

 

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


 ▷ 결과

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

 

 

 

 

 

 

PROC COMPARE 사용하기

 

 

 

 

 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#p013svopzf5egyn19dsc94uc5671.htm

 
 
 
 
 [SAS 프로그래밍] 원하는 순서대로 데이터 정렬하기
 [SAS 프로그래밍] 누락된 결측값 채우기