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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SAS中按十年分类日期相关的知识,希望对你有一定的参考价值。

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

我对如何使用IF,AND和ELSE语句来实现这一点有一个好主意,但我不知道如何让SAS提取年份,并且仅从日期开始将其应用于条件逻辑。

答案

你总是可以使用乘数和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

另一答案

不需要条件逻辑 - 可以使用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

以上是关于如何在SAS中按十年分类日期的主要内容,如果未能解决你的问题,请参考以下文章

在SAS中按几个变量分组

如何禁用在android片段类中按下的后退按钮

有没有办法在 SQL 中按列名对两个日期列进行分类?

如果在 WebView 片段中按下后退按钮,如何返回上一页?

在SAS中导入CSV数据时如何设置正确的日期格式?

在android中按下通知时如何打开片段页面