BookmarkSubscribeRSS Feed

사용자 정의 포맷 1

Started Friday by
Modified Friday by
Views 37

SAS에는 다양한 기본 숫자, 문자, 날짜/시간 포맷이 있습니다.

하지만 특정 조건에 따라 데이터를 다르게 표현해야 할 때가 있습니다.

이럴 때 사용자 정의 형식(Customized Format)을 사용하여 데이터를 사용자가 원하는 대로 정의할 수 있습니다.

개개인의 건강정보와 심장 질환 관련된 정보가 포함된 가상의 Heart 데이터와 예제를 통해서 사용자 정의 포맷에 대해서 알아보겠습니다.

 

image.png

 

 

 

데이터는 5,209개의 데이터와 17개의 칼럼으로 구성되어 있습니다.

  • Status: 생존(Alive) 또는 사망(Dead) 여부.

  • DeathCause: 사망했을 경우 사망 원인.

  • AgeCHDdiag: 심장 질환 진단을 받은 나이.

  • Sex: 성별.

  • AgeAtStart: 데이터 수집을 시작했을 당시의 나이.

  • Height: 신장.

  • Weight: 체중.

  • Diastolic: 이완기 혈압.

  • Systolic: 수축기 혈압.

  • MRW: Metropolitan Relative Weight (메트로폴리탄 상대 체중) 지수.

  • Smoking: 흡연량(담배 개비 수).

  • AgeAtDeath: 사망했을 당시의 나이.

  • Cholesterol: 콜레스테롤 수치.

  • Chol_Status: 콜레스테롤 상태(Desirable, Borderline, High).

  • BP_Status: 혈압 상태(Optimal, Normal, High).

  • Weight_Status: 체중 상태(Normal, Overweight, Underweight 등).

  • Smoking_Status: 흡연 상태(Non-smoker, Moderate, Heavy 등).

이 데이터셋은 환자의 상태, 주요 건강 지표(혈압, 콜레스테롤), 그리고 생활 습관(흡연, 체중) 등의 정보를 종합적으로 담고 있어 심장 질환과 관련된 위험 요인을 분석하는 데 사용될 수 있습니다.

데이터는 NULL 값인 것도 있으며 . 로 구성된 데이터도 있습니다.

Status 변수가 Alive인 사람들은 아직 생존해 있기 때문에, AgeAtDeath (사망 당시 나이)와 DeathCause (사망 원인) 변수에 값이 있을 수 없습니다. 이 경우 결측치는 '해당 없음(Not Applicable)'을 의미합니다.

Systolic(수축기 혈압)의 데이터를 가지고 정상(Normal), Prehypertenstion(고혈압 전단계), Hypertension(고혈압) 분류해 SystolicStatus라는 새로운 칼럼을 만들어 보겠습니다.

분류의 기준은 아래와 같습니다.

- Normal(정상): 120 미만

- Prehypertension(고혈압 전단계): 120이상 139이하

- Hypertension(고혈압): 140 이상

 

 

방법1. 조건문 IF-ELSE IF 구문을 사용하여 수축기 혈압 값에 따른 분류

 

 

data test;
    set work.heart; 
    
    if Systolic < 120 then SystolicStatus = "Normal";
    else if 120 <= Systolic <= 139 then SystolicStatus = "Prehypertension";
    else if Systolic >= 140 then SystolicStatus = "Hypertension";
    else SystolicStatus = "Missing"; 

run;

 

image.png

 

 

 

 

Systolic에 따라 SystolicStatus라는 새로운 칼럼값이 새로 생성된걸 확인할 수 있습니다.

IF-THEN-ELSE 구문을 사용하면, 아래와 같은 장점이 있습니다.

  • 더 명확하고 직관적

  • 데이터에 실제 텍스트 값이 저장됨

  • 포맷 의존성 없이 다른 프로시저에서도 사용 가능

  • 디버깅이 쉬움

 

 

 

방법2. PROC FORMAT 문 활용하기

 

 

proc format;
    value systolicStatus
        low-<120 = "Normal"
        120-139 = "Prehypertension"  
        140-high = "Hypertension"
        . = "Missing";
run;

data test2;
set work.heart;
format Systolic SystolicStatus.;
run;

 

 

image.png

 

 

 

PROC Format 문을 사용하면 아래와 같은 장점이 있습니다.

 

  • 데이터 가독성

  • 데이터의 일관성 유지

  • 코드 간소화

  • 재사용 가능

 

Contributors
Version history
Last update:
Friday
Updated by:

hackathon24-white-horiz.png

Join the 2025 SAS Hackathon!

Calling all data scientists and open-source enthusiasts! Want to solve real problems that impact your company or the world? Register to hack by August 31st!

Register Now

Article Tags