BookmarkSubscribeRSS Feed

[SAS 프로그래밍] 다른 테이블 활용하여 데이터 수정하기

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

[SAS 프로그래밍] 다른 테이블 활용하여 데이터 수정하기

 

 

 안녕하세요^^

 

이번 시간에는 다른 테이블의 정보를 활용하여 기존 테이블의 값을 업데이트 하는 방법에 대해 알아보도록 하겠습니다.

 

 

 

 

▶ 예제데이터

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

 

PlwoAazmdvgB07rww3lxTcwAAAABJRU5ErkJggg__.png

 

X_Rk03IgIaTmwAAAABJRU5ErkJggg__.png 

 

 

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

 

 

l929G8r5fvR72llOnojJpNZln8JGtQybT07QwAAAABJRU5ErkJggg__.png

 

2PTXSyY3EQAAAAABJRU5ErkJggg__.png

 

 • 데이터 old_sal에는 사원들의 정보와 기존에 받던 급여(salary)가 저장되어 있고,

   ​new_sal데이터에는 사원들의 새로 업데이트된 급여가 저장되어 있습니다.

 

 

 

 

 

 

 DATA STEP 사용하기

 

g92GxODWjbX1wAAAABJRU5ErkJggg__.png

 

HbggQcO_q68MFCmBxiJDJmzzjor87GJBAGyAT3IYxipysMZDnlN9wW9lHCfiKF7nnjiiTw5B5_TqVFOPQboxqLSekUiujgUDjnkk.png

 

 

 coding

 

• 먼저 각각의 데이터셋을 기준 변수인 사원ID(empID)로 정렬하고 old_sort와 new_sort로 저장하였습니다

 

• 다음으로 merge문을 사용하여 기존 데이터(old_sort)의 급여항목을 제외한 다른 정보들과

   새로운 데이터(new_sort)의 바뀐 급여항목을 empID를 기준으로 병합하였습니다.

 

• 각 데이터들은 기존에 있던 사원들에 대해서만 업데이트를 하도록 if문과 in옵션을 사용하였습니다.

 

 

 

▷결과

오른쪽에 보이는 바와 같이 기존 사원들의 정보는 그대로 유지한 채 급여항목만 업데이트 된 것을 확인할 수 있었습니다.

 

 

 

 

 

 

 PROC SQL 사용하기 : 기존 테이블에 덮어쓰기

 

5_1EqzwZjMAAK6HN5gBALC45soaAABcHytrAAAWR7IGAGBxJGsAABZHsgYAYHEkawAAlvb09D80NlBOOXE5KwAAAABJRU5ErkJgg.png

 

H9rqCqchagY5AAAAAElFTkSuQmCC.png

 

 

 coding 

 

• update문을 사용하여 어떤 데이터 셋의 정보를 업데이트 할지 지정해 주었습니다.

 

• set문 안의 where문을 통해 기존의 empID와 새로운 데이터의 empID가 같은 경우에만 업데이트가 되도록 지정을 해 준 다음,

 

• 새로운 데이터(new_sal)로부터 가져온 새급여 변수(newsalary)를 기존의 급여 변수인 salary에 저장되도록 하였습니다.

 

• 마지막으로 위의 업데이트 내용이 모두 반영이 된 데이터에서 출력할 변수들을 select 문에 써주어 출력합니다.

 

 

 

▷결과

 

• 결과는 오른쪽에 보이는 바와 같이 급여항목이 업데이트 된 것을 확인할 수 있습니다.

 

• 하지만 이 방법은 기존에 있던 old_sal데이터 셋에 새로운 정보만 덮어 씌워진 것으로,

   ​기존 데이터 파일이 없어지게 되므로 주의하여 사용해야 합니다.

 

 

 

 

 

 

▶ PROC SQL 사용하기 : 새로운 테이블로 생성하기

 

8DlU3oXjVwE6QAAAAASUVORK5CYII_.png

 

H9rqCqchagY5AAAAAElFTkSuQmCC.png

 

 

 coding

 

• 위에서 사용한 SQL방법과 다르게, 정보를 덮어 씌우지 않고 새로운 테이블로 저장하는 방법입니다.

 

• create table 을 사용하여 새로 만들 테이블 이름(updatetable)을 지정해 줍니다.  

 

• 새로 만든 테이블(updatetable)에는 old_sal에 있는 모든 변수를 그대로 가져오도록 select에 *을 입력하였습니다.

 

• 그 다음 update문부터는 위에서 설명한 방법과 같은데,

  old_sal을 그대로 사용하지 않고updatetable을 사용하는 부분만 다릅니다.

 

 

 

▷결과

 

• 위에서 출력된 결과와 결과는 같지만 새로운 데이터 셋 updatetable이 생성되어 저장되는 부분이 다릅니다.

 

• 따라서 기존의 old_sal 데이터 셋은 그대로 보존할 수 있습니다.

 

 

 

 

 

 

 

 

[출처]

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

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

hackathon24-white-horiz.png

The 2025 SAS Hackathon Kicks Off on June 11!

Watch the live Hackathon Kickoff to get all the essential information about the SAS Hackathon—including how to join, how to participate, and expert tips for success.

YouTube LinkedIn

Article Labels
Article Tags