SAS에서 두 데이터셋을 아래 위로 합칠 때, 같은 이름의 변수지만 길이(예: 문자열 길이)가 다를 경우 LENGTH 문을 사용하여 길이를 미리 맞춰주는 것이 중요합니다. 변수 길이가 다르면 오류가 발생할 수 있기 때문입니다.
예를 들어, data1에 있는 name 변수의 길이가 20이고, data2에 있는 name 변수의 길이가 30일 경우, 두 데이터셋을 합치기 전에 다음과 같이 길이를 맞출 수 있습니다.
1. LENGTH 문을 사용하여 길이 맞추기
data data1_adjusted;
length name $30; /* 길이를 더 긴 쪽에 맞추기 */
set data1;
run;
data combined_data;
set data1_adjusted data2;
run;
위 코드에서는 data1의 name 변수 길이를 data2의 name 변수 길이(30)에 맞추어 data1_adjusted라는 새로운 데이터셋을 생성한 후, data1_adjusted와 data2를 아래 위로 합칩니다.
2. PROC SQL을 사용하여 길이 맞추기
PROC SQL을 사용할 수도 있습니다. PROC SQL을 사용하면 각 변수의 길이를 조정하고 데이터를 합칠 수 있습니다.
proc sql;
create table combined_data as
select
coalesce(a.name, b.name) as name length=30, /* 더 긴 쪽으로 길이 맞추기 */
coalesce(a.other_var, b.other_var) as other_var
from data1 as a
full join data2 as b
on a.id = b.id; /* 필요시 기본 키로 조인 */
quit;
이 방법을 통해, 두 데이터셋을 변수 길이에 맞게 조정하면서 합칠 수 있습니다.
'SAS연습200제 > SAS데이터셋활용하기' 카테고리의 다른 글
Q_02_10. 동일한 데이터셋에서 처음과 마지막 관측치 구하기 - SET a/BY 문 (0) | 2025.03.18 |
---|---|
Q_02_09. 두 DATASET을 아래위로 합치기 - SET a b/BY 문 (0) | 2025.03.18 |
Q_02_07. 데이터셋 아래 위로 합치기 - 다른 변수가 있는 경우 (0) | 2025.03.18 |
Q_02_06. 데이터셋 아래 위로 합치기 (0) | 2025.03.18 |
Q_02_05. DATA 문의 형태에는 어떤 것이 있는가 ; work.A1, _NULL_, DATA.A1 (0) | 2025.03.18 |