데이터 스터디/SAS

SAS - 구분자(dlm, dsd) , 할당문, 날짜함수

케이와이엠 2023. 3. 22. 12:34

# 구분자의 종류 : DLM , DSD

1) DLM

-여러 개의 문자를 지정

-연속된 구분자는 1개로 간주함

-기본 구분자는 공백

 

2) DSD

-연속된 구분자는 결측값 포함

-문자열 " "로 표시

-기본 구분자는 ',' 쉼표 이다.

 

3) TAB구분자 : EXPANDTABS

 

DLM은 연속된 구분자를 1개로 간주 & 기본 구분자는 공백

 

1aa2ab3 -> 1(공백)(공백)2(공백)(공백)3 ->1(공백)2(공백)3 -> 123

4b5bab6 -> 4(공백)5(공백)(공백)(공백)6 -> 4(공백)5(공백)6->456

7a8b9 -> 7(공백)8(공백)9 -> 789

 

 

 

 

 

-DSD는 연속된 구분자는 결측값 포함

- DSD가 있는 경우 공백 사이에 .을 추가

공백이 둘이면 (공백).(공백)

공백이 셋이면 (공백).(공백).(공백)

 

1aa2ab3 -> 1(공백)(공백)2(공백)(공백)3 ->1(공백).(공백)2(공백).(공백)3

-> 1.2

4b5bab6 -> 4(공백)5(공백)(공백)(공백)6 -> 4(공백)5(공백).(공백).(공백)6-> 45.

7a8b9 -> 7(공백)8(공백)9 -> 789

 

 

 

 

 

이때 만약에 dlm에 공백까지 더 해서 dlm=' ab' 하고 4b5b 6 넣어주면

4b5b 6 -> 4(공백)5(공백)(공백)6 -> 4(공백)5(공백).(공백)6 -> 45

 

 

 

 

 

 


# 데이터가 부족한 경우의 처리 : missover, turncover,flowover, stopover

flowover : 데이터값이 부족하면 다음 레코드 읽어 ( 기본 값임 !)
missover : 데이터가 부족하면 결측값으로 할당
stopover : 데이터가 부족하여 결측값이 생기면 중단.

[예시]

DLM 구분자가 쉼표 하나

 

stopover 해주면 한 줄에서 멈춰

 

그대로 진행 이로 보아 ,,이면 없는 애 취급한다

 

, , 이면 결측값 취급

DSD 사용해. -> 연속된 구분자들 사이는 결측값으로 처리함 97(공백)(공백)92->97(공백).(공백)92
 
DSD 없는 DLM 의 경우, 연속된 구분자들은 다 하나로 취급

=> DSD 사용하면 무조건 연속된 구분자는 (공백).(공백) 하고

DLM 사용하면 연속된 구분자를 하나로 취급해.

 


# 할당문과 선언문

- 할당문 : 새로운 변수 혹은 기존 변수를 생성

-선언문 : 지정된 변수에 특정 기능 표시 ex) length, format, label, drop, keep, rename 등

 

{"originWidth":544,"originHeight":411,"style":"alignCenter","width":405,"height":306,"caption":"연결연산자
결과

 


#날짜변수 출력 포멧

- 날짜 입력 형식 (인포맷)

- 날짜 출력 형식 (포맷)

MDY() 함수 로 새로 만들어주기 -> 포맷 시키기
TODAY() 함수, diff 경과일수 나타내기 -> 포맷시키기

 

입력 -> 출력 포맷

 

day() month() year() weekday() 함수로 숫자로 표현해주기

 

put문으로 출력포맷이 뭔지 날짜 확인하기

 

* sas 날짜 기준 : 1960년 1월 1일 (=0)