[SAS 프로그래밍] 데이터 셋 비교하기
안녕하세요^^
이번 시간에는 다른 두 데이터 셋을 비교하는 방법에 대해 알아보겠습니다.
갖고 있는 정보 데이터가 새로 업데이트 되는 경우에, 업데이트 된 부분을 확인할 때 유용하게 사용할 수 있습니다.
▶ 예제데이터
먼저 예제 데이터로 사용할 데이터 셋은 아래와 같습니다. SASUSER의 CREDIT 데이터를 수정하여 사용하였습니다.
============================================================
• 두 데이터 셋에서 공통으로 사용되는 변수는 4개 이고, 이 중에 Type 변수나 Transaction 변수가 달라지는 행이 총 5개 존재합니다.
• 이 두 데이터 셋에서 업데이트 된 행만 확인해 보도록 하겠습니다.
▶ DATA STEP 사용하기; merge statement
▷ 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 사용하기
▷ 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를 하지 않으면 같은 데이터인데 행의 위치만 달라지게 되어도 다른값으로 카운트 되어 결과에 출력 됩니다
• 마찬가지의 이유로, 중간에 새로운 행이 추가된다면 새로운 행을 제외한 아래 행들은 모두 같은 값을 같더라도 다른 값으로 인식되어 출력되게 됩니다.
이상으로 데이터 셋을 비교하는 방법에 대해 알아보았습니다..
감사합니다. ^^
[출처]
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.