[SAS] 날짜 변수 정리
1. format type
- WEEKDATEw. 요일, 월이름 일, 연 연도 w = 15 : Tue, Mar 18, 98
- WEEKDATXw. 요일, 일 월이름 연도 w = 15 : Tue, 18 Mar 98
- WORDDATEw. 월이름 일 연도 w = 15 : Mar 18 , 1998
- WORDDATXw. 일 월이름 연도 w = 15 : 18 Mar 1998
- JULIANw. 연도/날짜수 w = 7 : 1998077
- YYMMw. 연도/M/월 w = 7 : 1998M03
- MMYYw. 월/M/연도 w= 7 : 03M1998
- YYMONw. 연도/월이름 w = 7 : 1998MAR
- MONYYw. 월이름/연도 w= 7 : MAR1998
- YYQw. 연도/Q/분기 w = 6 : 1998Q1
- YEARw. 연도 w = 4 : 1998
- MONTHw. 월 w = 2 : 3
- DAYw. 일 w = 2 : 18
- QTRw 분기 w =1 1
- WEEKDAYw. 4
- MONNAMEw. March
- DOWNAMEw. Wednesday
2. sas 날짜값을 만드는 함수
- mdy(month, day, year)
- today()
- yyq(year, quater)
3. 날짜 변수를 숫자변수로 만드는 함수
- day()
- month()
- year()
- weekday()
4. 날짜구간 함수
- intnx('interval', from, n)
이 함수는 특정한 날짜(from)로부터 n만큼의 시간간격(interval)에 해당하는 날짜값을 계산해준다. 여기서 interval은 시간간격의 단위를 나타내는 것으로 year, semiyear, qtr, month, semimonth, tenday, week, day 등이 있다. 또한 n은 from에서 정의된 시작시점으로부터 증분 되는 구간의 수를 나타낸다.(from에는 날짜변수 또는 날짜상수가 지정되어야 한다.) 여기서 증분되는 구간의 수 n은 양의 정수, 음의 정수, 0의 값을 모두 가질 수 있으며, n이 음의 정수인 경우에는 시작시점으로부터 n구간 이전의 날짜값이 만들어진다.
예를 들어, date1이라는 변수의 날짜값이 2002년 1월 5일이라고 할때 다음과 같이 intnx함수를 사용하면
date2 = intnx('month', date1, 10)
변수 date2에는 2000년 11월 1일에 해당하는 날짜값이 저장된다.
이러한 intnx 함수를 사용할 때 유의할 점은 시작시점(from)의 날짜값으로부터 시간간격에 따른 날짜값이 만들어지는 것이 아니라, interval을 기준으로 하여 날짜값이 만들어진다는 것이다. 따라서 월 구간(month interval)은 각 월의 1일로, 연 구간(year interval)은 각 연도의 시작인 1월 1일로 날짜 값이 만들어지게 된다.
- intck('interval', from, to)
이 함수는 날짜(from)와 날짜(to) 사이의 시간간격을 계산하는 함수이며, 여기서 interval은 시간간격을 나타낸다. intnx 함수와 마찬가지로 intck 함수를 사용할때 주의할 사항은 시간간격의 개수를 셀 때 from에 나와 있는 날짜값으로부터 세는 것이 아니라 from에 나타난 날짜값의 시간간격의 시점부터 계산한다는 것이다.
예를 들어, 다음 예에서 변수 mon_n1과 mon_n2에는 모두 2의 값이 저장된다.
5. 숫자를 날짜값으로 바꿔줄때.
put의 단위에 n을 넣지 않을경우 포맷이 입혀서 들어가므로 반드시 n을 넣도록 할 것.
data one ;
one = mdy(05,18,2004) ;
two = put(one, yymmn10.) ;
proc print ;
run ;
6. day = put(day(ctrt_date1), z2.)
z2.을 하는 이유는 간단함. 하지 않을 경우 ctrt_date1이 공백일 경우 day값도 공백이라는 문제가 생기기 때문이다. 기본으로 '00'을 넣어준다는 것.
7. 첫째주 최초 평일 찾기
mm_frst =min(intnx( 'week.2', p_d, 1),
intnx( 'week.3', p_d, 1),
intnx( 'week.4', p_d, 1),
intnx( 'week.5', p_d, 1),
intnx( 'week.6', p_d, 1));
* intnx, intck, input, put만 제대로 쓴다면 sas에서 날짜는 어느 정도 정리가 된거라고 봐도 무방할 것이다.
No comments