我有一个包含许多日期的数据集。我想将这些日期分类为一个新的专栏,按十年(20世纪80年代,90年代等)组织它们。
我很清楚如何使用IF,AND和ELSE语句来实现这一目标,但我不知道如何让SAS提取年份而且仅从该日期开始将其应用于条件逻辑。
答案 0 :(得分:0)
不需要条件逻辑 - 可以使用year()
和floor()
函数的组合和一些简单的算法:
data have;
infile cards;
input dateval date9.;
cards;
01JAN2004
08FEB1996
07MAR1987
14SEP1982
;run;
data want;
set have;
decade=floor(year(dateval)/10)*10;
run;
给出了:
答案 1 :(得分:0)
您也可以使用乘数和intnx()
函数。
使用Allan的样本数据......
data want;
set have;
decade=year(intnx('year10.',dateval,0,'beginning'));
run;
代码的intnx()
部分返回与十年开始相对应的日期,然后我们只从中获取年份部分。
year10.
参数告诉我们要使用数十年,0
参数表示将提供的日期转移到当前十年,beginning
参数告诉它返回日期相当于十年的开始。
如果您不熟悉使用intnx()
在SAS中执行日期计算,请参阅此处以获取快速入门:https://stackoverflow.com/a/11211180/214994