BookmarkSubscribeRSS Feed

[SAS 활용 노하우] Data Join

Started ‎10-29-2023 by
Modified ‎10-29-2023 by
Views 103

데이터 분석을 하기 위해서 여러가지 데이터들을 결합하기도 합니다.

분석에 필요한 데이터가 한 테이블에 정리된 데이터 셋이 이상적이기는 하지만, 여러가지의 테이블을 결합해서 분석에 필요한 데이터셋을 만들기도 합니다.


테이블의 결합은 주로 마스터 테이블과 레코드 테이블 간의 결합으로 이루어집니다.


마스터 테이블은 특정 요소에 대한 공통의 데이터를 모아둔 데이터를 말하고 유일한 id를 가지게 됩니다.



proc import datafile= '/home/u45061472/sasuser.v94/reserve.csv'
dbms= csv
out = work.testdata;
getnames= yes;

proc import datafile = '/home/u45061472/sasuser.v94/hotel.csv'
dbms= csv
out = work.hoteldata;
getnames= yes;




image (2).png

 hotel 데이터 셋



image (1).png

 reserve 데이터 셋



위 코드는 reserve 데이터 셋과 hotel 데이터 셋입니다.

reserve 데이터셋과 hotel 데이터셋에는 유일한 unique 값이 hotel_id 칼럼이 존재합니다.





data work.testdata4;
  set work.testdata;
  where people_num = 1;

data work.hoteldata2;
set work.hoteldata;
where is_business = 'TRUE';

proc sql;
  create table merged_data as
  select *
  from work.testdata4 as a
  inner join work.hoteldata2 as b
  on a.hotel_id = b.hotel_id;


reserve data에서 people_num이 1인 데이터 셋을 work라이브러리의 testdata4로 저장을 하고,

hotel data에서 is_busiess 칼럼이 true인 값만을 hoteldata2로 저장을 합니다.


마지막으로, SQL statement 를 사용해 hotel_id를 기준으로 2개의 데이터 셋을 결합합니다.


이외에도 Join 방법이 아래와 같이 있습니다.


Inner Join은 일치하는 레코드를 조합을 생성

Left Join: 구문으로 일치하는 레코드 조합 외에 결합되지 않는 열은 Null로 채워집니다.

Right Join: 구문으로 일치하는 레코드 조합 외에 결합되지 않는 열은 Null 로 채워집니다.

Full Join: 양쪽 테이블의 모든 레코드 조합을 가져오는 결합으로 결합되지 않은 열은 Null값으로 채워집니다.

Cross Join: 지정한 테이블의 모든 레코드 조합을 생성하는 결합 방법입니다.


Version history
Last update:
‎10-29-2023 10:45 AM
Updated by:



Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.

If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website. 

Register now!

Article Labels
Article Tags