我是SAS的初学者,一直在寻找如何使用函数从特定日期过滤数据集。我想过滤掉从去年12月1日到今天的数据。我可以通过下面的代码得到我需要的东西但是想尝试使用函数来获得相同的结果(如果可能的话)并且没有取得多大成功。感谢。
data getCurrYear;
set k;
if (year(rundt)= year(today())-1 and month(rundt) = 12 )or year(rundt) = year(today()) ;
run;
答案 0 :(得分:1)
我认为最好的方法是mdy
功能。
if mdy(12,1,year(today())-1) le rundt;
我试图找到一种方法来使用intck
来完成这项工作,这是我通常用于此类目的的功能,但我不会这样做#&#t} 39;可以使用这些规则(Dec 1,Y-1到Dec 31,Y)只使用一个函数调用。 12月1日至11月31日是可能的。
答案 1 :(得分:0)
使用intnx ...
N.B。当前日期为01DEC时,它将返回相同的日期。如果您需要之前的01DEC,只需在today()
功能中将today()-1
更改为intnx()
。
if intnx('year1.12',today(),0,'beginning') <= rundt <= today() ;
检查逻辑:
data check ; do dt = '01dec2012'd to '31dec2013'd by 12 ; from_dt = intnx('year1.12',dt,0,'beginning') ; output ; end ; format dt from_dt date9. ; run ; dt from_dt 01DEC2012 01DEC2012 13DEC2012 01DEC2012 25DEC2012 01DEC2012 06JAN2013 01DEC2012 18JAN2013 01DEC2012 30JAN2013 01DEC2012 11FEB2013 01DEC2012 23FEB2013 01DEC2012 07MAR2013 01DEC2012 19MAR2013 01DEC2012 31MAR2013 01DEC2012 12APR2013 01DEC2012 24APR2013 01DEC2012 06MAY2013 01DEC2012 18MAY2013 01DEC2012 30MAY2013 01DEC2012 11JUN2013 01DEC2012 23JUN2013 01DEC2012 05JUL2013 01DEC2012 17JUL2013 01DEC2012 29JUL2013 01DEC2012 10AUG2013 01DEC2012 22AUG2013 01DEC2012 03SEP2013 01DEC2012 15SEP2013 01DEC2012 27SEP2013 01DEC2012 09OCT2013 01DEC2012 21OCT2013 01DEC2012 02NOV2013 01DEC2012 14NOV2013 01DEC2012 26NOV2013 01DEC2012 08DEC2013 01DEC2013 20DEC2013 01DEC2013