끄적이는 프로그래밍/SAS 프로그래밍

SAS programming 기초 (자료의 결합 - 가로 결합)

요맘때10 2022. 8. 31. 08:54
반응형

목적

오늘은 SAS 프로그램을 이용하여 자료의 결합에 대해 알아보자. Sample data는 적당히 만들어 이용할 것이다. SAS 프로그램에서 결합의 종류는 크게 세로 결합과 가로 결합이 있는데,

 

이전 포스팅에서는 세로 결합을 다루었다.

세로 결합에 대한 내용을 먼저 보고 오려면 아래 링크 Click

2022.08.29 - [끄적이는 통계분석/SAS] - SAS programming 기초 (자료의 결합 - 세로 결합)

반응형

 

이번 포스팅에서는 가로 결합을 다룰 것이다.


 

1. 가로 결합 (Set)

- 일대일 결합

- 데이터셋들의 모든 변수가 생긴다.

- 최종적으로 obs가 가장 작은 데이터셋의 obs가 생성된다.

- set 데이터셋1; set 데이터셋2; set ...; set 데이터셋n;

- 동일한 변수명이 있는 경우 마지막 데이터셋의 값으로 적용된다.

 

먼제 예제 데이터셋 a, b를 만들고

data a;
  input x;
datalines;
1
2
3
;
run;

data b;
  input y;
datalines;
4
5
;
run;

가로 결합을 해보면

data c;
  set a;
  set b;
run;

a 데이터셋의 3번 관측값이 사라지고, obs가 작은 (2) 데이터셋의 obs가 생성된 것을 알 수 있다.

 

만약 데이터셋에 동일한 변수가 있다면

data a;
  input x y;
datalines;
1 1
2 2
3 3
;
run;

data b;
  input y;
datalines;
4
5
6
;
run;

가로 결합을 해보면

data c;
  set a;
  set b;
run;

a 데이터셋의 y 변수의 관측값은 사라지고 마지막 데이터셋(b)의 관측값이 생긴 것을 알 수 있다.


2. 가로 결합 (Merge)

2.1 일대일 결합

- 최종적으로 obs가 가장 큰 수 데이터셋의 obs가 생성된다.

- merge 데이터셋1 데이터셋2 ... 데이터셋n;

- 데이터셋들의 관측치가 같은 경우 set에 의한 가로 결합과 동일하다.

 

먼제 예제 데이터셋 a, b를 만들고

data a;
  input x;
datalines;
1
2
3
;
run;

data b;
  input y;
datalines;
4
5
;
run;

가로 결합을 해보면

data c;
  merge a b;
run;

set에 의한 가로 결합과 달리 obs가 큰 (3) 데이터셋의 obs가 생성된 것을 알 수 있다.



2.2 짝지은 가로 결합

- by에 의한 공통변수가 있는 경우

- 공통변수에 대응되는 값이 없으면 결측

- by에 의한 공통변수 이외의 공통변수가 있다면 가장 마지막 데이터셋에 있는 값으로 적용된다.

- merge 데이터셋1 데이터셋2 ... 데이터셋n; by 공통변수;

- 주의할 점은 짝지은 가로 결합 전에는 by에 의한 공통변수로 정렬 (proc sort 사용)이 되어 있어야 한다.

 

먼제 예제 데이터셋 a, b를 만들고

data a;
  input x y;
datalines;
1 1
2 2
3 3
;
run;

data b;
  input x z;
datalines;
1 4 
1 5
3 6
;
run;

가로 결합을 해보면

data c;
  merge a b;
  by x;
run;

by에 의한 공통변수 x 값에 대응되는 값이 없는 경우 (x=2) z 값은 결측임을 알 수 있다.

by에 의한 공통변수 외 다른 공통변수가 있는 경우

data a;
  input x y w;
datalines;
1 1 7
2 2 8
3 3 9
;
run;

data b;
  input x z w;
datalines;
1 4 10
1 5 11
3 6 12
;
run;

가로 결합을 해보면

data c;
  merge a b;
  by x;
run;

w 변수는 가장 마지막 데이터셋에 대응되는 값이 생긴 것을 알 수 있다.

 

 

 
반응형