我对一个简单的问题感到困扰。 我需要获得该月的最后一个工作日,而我的数据集中的日期仅包括工作日。
例如:
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。
所以我想知道是否有一种方法可以直接提取给定月份的最后一天而不是日历月。
非常感谢您的帮助。
答案 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