SAS 프로그램에서 생성된 결과를 같은 프로그램 내에서 재활용하는 방법에는 DATA 스텝과 PROC 스텝을 적절히 사용하여 다양한 방식으로 데이터를 다시 불러오거나 가공할 수 있습니다. 이때 중요한 것은 이전 단계에서 생성된 데이터셋을 SET이나 MERGE를 통해 재활용하는 방법입니다.
다음은 SAS 프로그램 내에서 결과를 재활용하는 몇 가지 예시입니다.
1. SET 문을 사용하여 재활용하기
이전 단계에서 생성된 데이터셋을 SET 문을 통해 다시 불러와 가공할 수 있습니다.
data work.final_data;
set work.intermediate_data; /* 이전 단계에서 생성된 데이터셋 불러오기 */
bmi_status = ifc(bmi > 25, 'Overweight', 'Normal'); /* 새로운 변수 생성 */
run;
proc print data=work.final_data;
run;
이 코드는 work.intermediate_data라는 데이터셋을 불러와 BMI 값에 따라 새로운 변수 bmi_status를 추가합니다. 이렇게 생성된 final_data는 이후 다른 절차에서 재활용할 수 있습니다.
2. PROC MEANS의 요약 통계를 활용하여 재가공하기
PROC MEANS로 요약 통계를 계산한 후, 해당 결과를 OUTPUT OUT 옵션을 사용하여 데이터셋으로 저장할 수 있으며, 이 데이터셋을 후속 처리에 재활용할 수 있습니다.
proc means data=work.final_data noprint;
var bmi;
output out=work.bmi_summary mean=mean_bmi std=std_bmi;
run;
data work.analysis_result;
set work.final_data;
if bmi > mean_bmi then bmi_category = 'Above Average';
else bmi_category = 'Below Average';
run;
proc print data=work.analysis_result;
run;
이 예제에서는 bmi_summary 데이터셋을 통해 BMI의 평균을 구하고, 그 값을 활용하여 bmi_category라는 새로운 변수를 추가했습니다.
3. PROC SQL로 요약 결과를 새 데이터셋으로 활용하기
PROC SQL을 사용하여 요약 결과를 CREATE TABLE 구문으로 데이터셋에 저장할 수 있습니다. 이 데이터셋은 이후 다른 분석 단계에서 재활용이 가능합니다.
proc sql;
create table work.average_bmi as
select sex, avg(bmi) as avg_bmi
from work.final_data
group by sex;
quit;
proc print data=work.average_bmi;
run;
위 예제는 sex별 평균 BMI 값을 계산하여 average_bmi라는 새로운 데이터셋으로 저장한 후, 다른 절차에서 재활용할 수 있도록 한 것입니다.
4. 조건에 따라 데이터 분리 및 재활용하기
IF 조건문을 사용하여 데이터를 여러 부분으로 나눠서 각 부분을 독립적으로 재활용할 수도 있습니다.
data work.high_bmi work.low_bmi;
set work.final_data;
if bmi > 25 then output work.high_bmi;
else output work.low_bmi;
run;
proc print data=work.high_bmi;
run;
proc print data=work.low_bmi;
run;
이 예제에서는 BMI 값에 따라 high_bmi와 low_bmi 데이터셋으로 나눠, 이후에 두 데이터셋을 각각 재활용할 수 있도록 구성했습니다.
5. 매크로 변수를 사용하여 값 재활용하기
특정 통계값을 매크로 변수로 저장하면, 프로그램 내 여러 곳에서 해당 값을 재활용할 수 있습니다.
proc sql noprint;
select avg(bmi) into :mean_bmi from work.final_data;
quit;
data work.result;
set work.final_data;
if bmi > &mean_bmi then bmi_category = 'Above Average';
else bmi_category = 'Below Average';
run;
proc print data=work.result;
run;
여기서 mean_bmi 값을 매크로 변수로 저장하고, 이후 DATA 스텝에서 &mean_bmi로 호출하여 bmi_category를 생성하는 데 사용했습니다.
6. OUTPUT OUT= 옵션을 사용하여 통계 값을 재활용하기
PROC MEANS, PROC SUMMARY 등의 절차에서 OUTPUT OUT= 옵션을 활용하면, 통계 값이 포함된 데이터셋을 생성하고 이를 프로그램 내에서 재활용할 수 있습니다.
proc means data=work.final_data noprint;
var height weight;
output out=work.stats_summary mean=height_mean weight_mean;
run;
data work.final_summary;
merge work.final_data work.stats_summary;
by _all_;
height_diff = height - height_mean;
weight_diff = weight - weight_mean;
run;
proc print data=work.final_summary;
run;
이 코드는 stats_summary에 저장된 평균값을 활용하여 각 관측값의 차이를 계산한 후, 새로운 데이터셋 final_summary에 저장하는 방식입니다.
이처럼 SAS 프로그램 내에서 생성된 결과를 다양한 방식으로 재활용하여, 분석의 효율성을 높이고 중복 작업을 줄일 수 있습니다.수정중
'SAS연습200제 > SAS데이터셋활용하기' 카테고리의 다른 글
Q_02_17. SET문과 INPUT 문을 동시에 사용하는 경우 (0) | 2025.03.18 |
---|---|
Q_02_15. UPDATE 문 사용하기 (0) | 2025.03.18 |
Q_02_14. 두 데이터셋을 옆으로 합치기 - IN 사용 (0) | 2025.03.18 |
Q_02_13. 두 데이터셋을 옆으로 합치기(1) -MERGE/BY 문 사용 (0) | 2025.03.18 |
Q_02_12. 두 데이터셋을 옆으로 합치기 -같은 변수 있는 경우 (0) | 2025.03.18 |