2010-06-13 15:30:39| 分类: 统计知识 | 标签: |举报 |字号大中小 订阅
在时间序列分析中,INTNX是比较常用的函数,用于输入时间。
形式如:INTNX(interval,start-from, increment) 。书上的用法一贯比较简单,网上搜索一下,该函数至少包括以下几种用法。
Example1. Some simple examples of using INTNX function:
format day week month_ year date9.; day=intnx('day', '01FEB2010'd, 7); week=intnx('week', '01FEB2010'd, 1); month_=intnx('month', '01FEB2010'd, 2); year=intnx('year', '01FEB2010'd, 1);
结果:
Example2. Multiplying and shifting intervals.
You may change the first argument (interval) by adding digits as in the example below.
format day week year date9.; day=intnx('day2', '01FEB2010'd, 2); week=intnx('week1.3', '01FEB2010'd, 1); year=intnx('year1.3', '01FEB2010'd, 1);
结果:
You are free to combine intervals by multiplying and shifting it. However, please be careful when contructing complex interval specifications.
Example3. Datetime and time formats.
The INTNX function may cope with datetime, time and date formats. The above examples are based on date format. The example below uses datetime and time formats.
format seconds minutes hours days weeks datetime20.; format t_seconds t_minutes t_hours time9.; seconds=intnx('second', '01FEB2010:00:00:00'dt, 1); minutes=intnx('minute', '01FEB2010:00:00:00'dt, 1); hours=intnx('hour', '01FEB2010:00:00:00'dt, 1); days=intnx('dtDay', '01FEB2010:00:00:00'dt, 1); weeks=intnx('dtWeek', '01FEB2010:00:00:00'dt, 1); t_seconds=intnx('second', '00:00:00't, 1); t_minutes=intnx('minute', '00:00:00't, 1); t_hours=intnx('hour', '00:00:00't, 1);
结果:
and so on.
Example4. Alignment within the interval.
format beginning middle end sameday date9.; beginning=intnx('month', '05FEB2010'd, 1, 'b'); middle=intnx('month', '05FEB2010'd, 1, 'm'); end=intnx('month', '05FEB2010'd, 1, 'e'); sameday=intnx('month', '05FEB2010'd, 1, 's');
结果
beginning = 01MAR2010 (1st day of the next month)
middle= 16MAR2010 (middle day (16 of 31) of the next month)
end= 31MAR2010 (last day (31) of the next month)
sameday = 05MAR2010 (the same day (5) of the next month)
但是我这个程序竟然有问题,谁能解答?
data exp1;
input a1 @@;
m=_n_;
dt=intnx('hour','1jan1996:12:10:00'dt,_n_-1);
format dt DATETIME18.;
cards;
1000.700 571.900 573.600 368.300 146.600 114.800 122.300
389.100 571.200 647.600 754.300 1030.200 733.800 541.400
;
run;
proc print data=exp1;
run;