- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
间隔函数intnx和INTCK
间隔函数INTNX和INTCK
函数语句的基本格式:
(1)INTNX:按间隔递增日期
INTNX(interval, from, n)
Interval: 一个包含间隔名的字符常量或变量
From:一个SAS日期,或者日期时间值
n: 是从包含from日期的间隔要递增的间隔数
(2)INTCK:计算两个日期或者日期时间值的间隔界限数
INTCK(interval, from, to)
Interval: 一个包含间隔名的字符常量或变量
From: 为开始日期或开始日期时间值
To: 为结束日期或结束日期时间值
2.应用
(1)按一定间隔增加日期
INTNX函数的一个实际的用法是生成周期日期值。例如对于一个消费价格指数数据,在记录的时候没有记录相应的时间,但是知道第一个观测是1990年6月,用INTNX函数可以实现对每个观测计算出ID变量DATE。
Data uscpi:
Input cpi;
Date=intns(‘month’,’1jun90’,_n_-1);
Format date monyy;
Cards;
129.0
130.4
……
;
Run;
(2)把日期标准化到时间间隔的开始
要想把日期统一到间隔的开始,可以调用增量为0的INTNX函数,增量为0的INTNX函数计算间隔第一天的日期。
例如:INTNX(‘month’, ‘17oct91’D,0)返回日期’1oct91’D。
把月中值改为月初值
Data uscpi;
Input date date. Cpi;
Format date monyy.;
Date=intnx(‘month’,date,0);
Cards;
15jun90 129.0
15jul90 130.4
15aug90 131.6
……
;
Run;
(3)计算时间间隔的宽度
计算一个时间间隔的宽度,可以用下一个时间间隔的ID值减去本间隔开始的ID值。
(4)计算时间间隔的结束日期或中点
计算间隔结束的日期,只要计算下一个间隔的开始日期再减去1(SAS日期是按天数计算的)。
计算时间间隔的中点的日期,可以计算间隔的第一天和最后一天的平均值。也可以用SEMIMONTH的INTNX函数。
例如:
Mon15_1=mdy(month(date),15,year(date));
Date=intnx(‘month’,date,0);
Mon15_2=date+14;
Mon15_3=intnx(‘day’,date,14);
Mon15_4=intnx(‘semimonth’,date,1)-1;
(5)计算时间间隔的顶部
为了使日期移动到下一间隔的开始(如果日期已经是间隔的开始,则不移动),可以从日期值中减去1然后再用INTNX函数把日期前进一个间隔。例如:newyear=intnx(‘year’,date-1,1)
(6)计算时间间隔数目
用INTCK函数可以计算两个日期之间的间隔界限个数。需要注意的是:INTCK计算的是从第一个日期移动到第二个日期的过程中经历的间隔始点的个数。并不计算两个日期之间完整的间隔的个数。
例 用函数INTCK计算每个月份的星期天、星期一、星期二等的个数。
Data uscpi;
Set uscpi;
D0=intnx(‘month’,date,0)-1;
D1=intnx(‘month’,date,1)-1;
Nsunday=intck(‘week.1’,d0,d1);
Nmonday=intck(‘week.2’,d0,d1);
Ntuesday=intck(‘week.3’,d0,d1);
Drop d0 d1;
Run;
(7)检查数据的周期性
加入有一时间序列数据集,想核实数据的周期性是否正确,观测值的日期标记是否正确,以及数据集是否按日期排序,可以使用INTCK函数去比较当前观测值的日期和前一观测值的日期并核实日期是否落在顺序的时间间隔中。
例 下面的语句核实数据集uscpi是正确地表明日期的月纪录数据集。语句retain用于保留观测值的日期,儿自动变量_N_用于启动对第二个观测值的核实过程。
Data _null_;
Set uscpil;
Retain prevdate;
If _N_1 than
If intck(‘month’,prevdate,date)^=1 then
Put “bad date sequence at observation number” _N_;
Prevdate=date;
Run;
(8)填充时间序列数据集中的删失值
可以通过把带有丢失观测值的时间序列数据集于包含完全的日期序列的数据集合并从而替代删失观测值。
(9)在日历计算中使用间隔
文档评论(0)