BookmarkSubscribeRSS Feed

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

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

[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

sas-innovate-wordmark-2025-midnight.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. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags