< Q_02_16. SAS 프로그램에서 생성된 결과를 같은 프로그램내에서 재활용하기
본문 바로가기
SAS연습200제/SAS데이터셋활용하기

Q_02_16. SAS 프로그램에서 생성된 결과를 같은 프로그램내에서 재활용하기

by sas 2025. 3. 18.

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 프로그램 내에서 생성된 결과를 다양한 방식으로 재활용하여, 분석의 효율성을 높이고 중복 작업을 줄일 수 있습니다.수정중