[SAS 프로그래밍] 다른 테이블 활용하여 데이터 수정하기
안녕하세요^^
이번 시간에는 다른 테이블의 정보를 활용하여 기존 테이블의 값을 업데이트 하는 방법에 대해 알아보도록 하겠습니다.
▶ 예제데이터
먼저 예제 데이터로 사용할 데이터 셋은 아래와 같습니다. SASUSER의 데이터 salcomps와 newsals를 사용하였습니다.
============================================================
• 데이터 old_sal에는 사원들의 정보와 기존에 받던 급여(salary)가 저장되어 있고,
new_sal데이터에는 사원들의 새로 업데이트된 급여가 저장되어 있습니다.
▶ DATA STEP 사용하기
▷ coding
• 먼저 각각의 데이터셋을 기준 변수인 사원ID(empID)로 정렬하고 old_sort와 new_sort로 저장하였습니다
• 다음으로 merge문을 사용하여 기존 데이터(old_sort)의 급여항목을 제외한 다른 정보들과
새로운 데이터(new_sort)의 바뀐 급여항목을 empID를 기준으로 병합하였습니다.
• 각 데이터들은 기존에 있던 사원들에 대해서만 업데이트를 하도록 if문과 in옵션을 사용하였습니다.
▷결과
오른쪽에 보이는 바와 같이 기존 사원들의 정보는 그대로 유지한 채 급여항목만 업데이트 된 것을 확인할 수 있었습니다.
▶ PROC SQL 사용하기 : 기존 테이블에 덮어쓰기
▷ coding
• update문을 사용하여 어떤 데이터 셋의 정보를 업데이트 할지 지정해 주었습니다.
• set문 안의 where문을 통해 기존의 empID와 새로운 데이터의 empID가 같은 경우에만 업데이트가 되도록 지정을 해 준 다음,
• 새로운 데이터(new_sal)로부터 가져온 새급여 변수(newsalary)를 기존의 급여 변수인 salary에 저장되도록 하였습니다.
• 마지막으로 위의 업데이트 내용이 모두 반영이 된 데이터에서 출력할 변수들을 select 문에 써주어 출력합니다.
▷결과
• 결과는 오른쪽에 보이는 바와 같이 급여항목이 업데이트 된 것을 확인할 수 있습니다.
• 하지만 이 방법은 기존에 있던 old_sal데이터 셋에 새로운 정보만 덮어 씌워진 것으로,
기존 데이터 파일이 없어지게 되므로 주의하여 사용해야 합니다.
▶ PROC SQL 사용하기 : 새로운 테이블로 생성하기
▷ coding
• 위에서 사용한 SQL방법과 다르게, 정보를 덮어 씌우지 않고 새로운 테이블로 저장하는 방법입니다.
• create table 을 사용하여 새로 만들 테이블 이름(updatetable)을 지정해 줍니다.
• 새로 만든 테이블(updatetable)에는 old_sal에 있는 모든 변수를 그대로 가져오도록 select에 *을 입력하였습니다.
• 그 다음 update문부터는 위에서 설명한 방법과 같은데,
old_sal을 그대로 사용하지 않고updatetable을 사용하는 부분만 다릅니다.
▷결과
• 위에서 출력된 결과와 결과는 같지만 새로운 데이터 셋 updatetable이 생성되어 저장되는 부분이 다릅니다.
• 따라서 기존의 old_sal 데이터 셋은 그대로 보존할 수 있습니다.
[출처]
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.