在SAS中给定时间流量的月份的最后一天

时间:2018-04-14 18:29:29

标签: sas

我对一个简单的问题感到困扰。 我需要获得该月的最后一个工作日,而我的数据集中的日期仅包括工作日。

例如:

ID   Date
1    20180301
1    20180302
1    20180305
...
1    20180329
1    20180330
1    20180402
...
2    20180301
2    20180302
2    20180305

我需要这样的输出:

ID   Date       Enddate
1    20180301   20180330 (The last business of March)
1    20180302   20180330
1    20180305   20180330
...
1    20180329   20180330
1    20180330   20180330
1    20180402   20180430 (The last business of March)
...
2    20180301   20180330 (Same for other IDs)
2    20180302   20180330
2    20180305   20180330

我尝试使用此命令:

enddt=intnx('month',date,0,'E');

然而,它将输出20180331而不是20180330。

所以我想知道是否有一种方法可以直接提取给定月份的最后一天而不是日历月。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以在数据步骤中执行此操作:

1) sort on date from latest to earliest (reverse sort)
2) create a variable based on the yearmonth = int(date/100)
3) do a datastep by yearmonth and retain enddate
4) if first.yearmonth then enddate = date;
5) drop vars you don't want
6) sort back to original order