STUDY(공개)/SAS

4. 포맷(FORMAT)의 개념

모코코마을 2023. 9. 1.

1. 숫자 포맷

포맷 명령어 포맷 설명 포맷 예시 입력값 포맷 출력값
숫자. 자리 수만큼 정수 숫자값을 표시 5. 324.5678 325
숫자.숫자 앞자리 숫자만큼 전체 길이를 표현하고, 뒷자리 숫자만큼 소수로 표현(만약 입력값 길이가 앞자리 숫자를 초과할 경우 소수점 이하 길이가 축소될 수 있음 6.2 324.5678 324.57
BEST숫자. '.'을 포함하여 숫자 자리수만큼 수를 표현(최상의 숫자 표기법으로 알려져 있음) BEST5. 324.5678 324.6
COMMA숫자.숫자 3자리 숫자값마다 ','를 표시 COMMA5. 3245.678 3,246
PERCENT숫자.숫자 주어진 숫자를 %를 표현합니다(단, 앞자리 숫자는 전체 길이, 뒷자리 숫자는 소수부분을 나타내는데 앞자리는 3보다 커야 합니다. '%'가 3의 위치만큼 차지합니다.) PERCENT8.2 0.3245678 32.46%
Z숫자.숫자 앞자리 수만큼 전체 숫자값을 표현하고 빈 길이만큼 0을 표시합니다. Z7.2 324.5678 0324.57

 

확장편집기

DATA TEST;
INPUT NAME $ AGE;
CARDS;
라이올라 324.5678
;
RUN;

 

확장편집기

PROC PRINT DATA=TEST;
VAR AGE;
FORMAT AGE 5.; /*1번 사례*/
FORMAT AGE 6.2; /*2번 사례*/
FORMAT AGE BEST5.; /*3번 사례*/
FORMAT AGE COMMA5.; /*4번 사례*/
FORMAT AGE PERCENT8.2; /*5번 사례*/
FORMAT AGE Z7.2; /*6번 사례*/
RUN;

 

"전체길이.소수점 이하의 길이"

 

1. 포맷 끝에는 반드시 '.'이 입력되어야 함

2. 잘리는 숫자는 반올림 됨

3. '.'과 ',' 을 포함하여 1자리수 계산

4. '%'는 3자리수 계산

 

 


2. 문자 포맷

포맷 명령어 포맷 설명 포맷 예시 입력값 포맷 출력값
$숫자. 자리 수만큼 문자를 표시 $6. 라이올라 라이올

 

확장편집기

DATA TEST;
INPUT NAME $ AGE;
CARDS;
라이올라 324.5678
;

RUN;

 

확장편집기

PROC PRINT DATA=TEST;
VAR NAME;
FORMAT NAME $6.; /*1번 사례*/
RUN;

 

영어 1자리 1BYTE

한글 1자리 2BYTE

 

 


3. 날짜 포맷

포맷 명령어 포맷 설명 포맷 예시 입력값 포맷 출력값
DATE숫자. 숫자값을 날짜값으로 변경(일월년) DATE9. 3 4JAN1960
YYMMDD숫자. 숫자값을 날짜값으로 변경(연도-월-일) YYMMDD10. 3 1960-01-04
WEEKDATE. 숫자값을 날짜값으로 변경(요일, 월일, 연도) WEEKDATE. 3 Monday, January 4, 1960
WORDDATE. 숫자값을 날짜값으로 변경(월일, 연도) WORDDATE 3 January 4, 1960
NLDATE숫자. 숫자값을 날짜값으로 변경(연도 월 일) NLDATE20. 3 1960년 01월 04일
YYMMN숫자. 숫자값을 날짜값으로 변경(연도 월) YYMMN6. 3 196001
MONYY숫자. 숫자값을 날짜값으로 변경(월 연도) MONYY7. 3 JAN1960
YEAR숫자. 숫자값을 날짜값으로 변경(연도) YEAR4. 3 1960
DATETIME숫자.숫자 숫자값을 날짜, 시간값으로 변경(일월년:시:분:초) DATETIME20. 3 01JAN1960:00:00:03
TIME숫자.숫자 숫자값을 날짜, 시간값으로 변경(시:분:초) TIME8. 3 0:00:03
HHMM숫자.숫자 숫자값을 날짜, 시간값으로 변경(시:분) HHMM5. 3 0:00
HOUR숫자.숫자 숫자값을 날짜, 시간값으로 변경(시각) HOUR5. 3 0

 

확장편집기

DATA TEST;
INPUT NAME $ NUMBER;
CARDS;
날짜 3
;
RUN;

 

확장편집기

PROC PRINT DATA=TEST;
VAR NUMBER;
FORMAT NUMBER DATE10.; /*1번 사례*/
FORMAT NUMBER YYMMDD10.; /*2번 사례*/
FORMAT NUMBER WEEKDATE.; /*3번 사례*/
FORMAT NUMBER WORDDATE.; /*4번 사례*/
FORMAT NUMBER NLDATE20.; /*5번 사례*/
FORMAT NUMBER YYMMN6.; /*6번 사례*/
FORMAT NUMBER MONYY7.; /*7번 사례*/
FORMAT NUMBER YEAR4.; /*8번 사례*/
FORMAT NUMBER DATETIME20.; /*9번 사례*/
FORMAT NUMBER TIME8.; /*10번 사례*/
FORMAT NUMBER HHMM5.; /*11번 사례*/
FORMAT NUMBER HOUR5.; /*12번 사례*/
RUN;

 

1960년 1월 1일을 숫자 0으로 표시

즉, 입력값 숫자 3은 1960년 1월 4일을 의미

 

YYMMDD숫자. 포맷 형식은 1960-01-01 형식이라 총 길이가 10임

그래서 YYMMDD10.으로 입력해야 함.

포맷의 길이보다 짧은 YYMMDD8.로 입력할 경우 60-01-04로 출력

하지만, 포맷의 길이보다 넘는 YYMMDD12.로 입력할 경우 에러발생

 

더보기

숫자.숫자 는 뭐징? 아까처럼 시간을 소수점으로 입력하는 건가용?

728x90

'STUDY(공개) > SAS' 카테고리의 다른 글

6. 테이블 결합  (0) 2023.09.02
5. 데이터 전처리를 위한 SAS 명령  (0) 2023.09.02
3. 데이터 생성법  (0) 2023.08.29
2. PROC 사용  (0) 2023.08.29
1. SAS의 기초  (0) 2023.08.29

댓글