如何在SAS中按十年分类日期

时间:2018-03-02 06:47:02

标签: sas

我有一个包含许多日期的数据集。我想将这些日期分类为一个新的专栏,按十年(20世纪80年代,90年代等)组织它们。

我很清楚如何使用IF,AND和ELSE语句来实现这一目标,但我不知道如何让SAS提取年份而且仅从该日期开始将其应用于条件逻辑。

2 个答案:

答案 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;

给出了:

enter image description here

答案 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