SAS 函数用于在 2 组列中的 2 个日期之间匹配时删除数据



我有一个大数据,其中日期在 2 列(15 年数据(。如果两列之间的月份匹配,我希望删除日期(不在乎日期或年份( 例如:01FEB2006 - 01FEB2017 现在我需要删除这个日期,因为月份匹配,而 16FEB2006 - 23JUN2017 因此我不需要一个新列来说明差异是 4 个月。如果 2 个月之间的差异为 +/- 30 天,则必须将其删除,例如:01jan2005 - 20dec2014。 请帮忙!我还在学习 SAS。 提前感谢您的帮助。

好的。这个问题有点不清楚。但正如我所推断的那样,这个问题有很多潜在的问题:

"删除具有匹配月份的观察">

这可以使用月份函数获得。(或者,如果您的日期是字符串,则为子字符串。http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000197966.htm

Data refined;
set begin;
month1=month(date_var1 );
month2=month(date_var2 );
if month1= month2 then delete; 
run;

"我需要一个新的专栏来说明差异是4个月。

如果你友好的功能在这里。您可以计算日期之间的时差。http://www.sascommunity.org/wiki/INTCK_function_examples

Data refined;
set begin;
TimeDifference = intck('month', date_var1, date_var2);
run;

"如果日期差异为 +-30 天,则删除观察">

与上述相同,但在这种情况下有天数。

Data refined;
set begin;
TimeDifference = intck('days', date_var1, date_var2) ;
if abs(TimeDifference) <=30 delete;
run;

最新更新