两个日期之间的月数SAS
我有一堆数据点,看起来像这样。样本:两个日期之间的月数SAS,sas,Sas,我有一堆数据点,看起来像这样。样本: Date_1 Date_2 10FEB2010:00:00:00 02/07/08 10FEB2010:00:00:00 03/10/08 10FEB2010:00:00:00 04/07/08 24MAY2010:00:00:00 05/09/08 24MAY2010:00:00:00 06/11/08 2
Date_1 Date_2
10FEB2010:00:00:00 02/07/08
10FEB2010:00:00:00 03/10/08
10FEB2010:00:00:00 04/07/08
24MAY2010:00:00:00 05/09/08
24MAY2010:00:00:00 06/11/08
24MAY2010:00:00:00 07/11/08
我想从月初开始索引这两个日期,然后在一个名为“month_from”的新列中获取这两个日期之间的月数。我想将新列“month_from”添加到我的示例数据集中,使其如下所示:
Date_1 Date_2 month_from
10FEB2010:00:00:00 02/07/08 -24
10FEB2010:00:00:00 03/10/08 -23
10FEB2010:00:00:00 04/07/08 -22
24MAY2010:00:00:00 05/09/08 -24
24MAY2010:00:00:00 06/11/08 -23
24MAY2010:00:00:00 07/11/08 -22
我的初步尝试是:
month_from=intck('month.1','Date_1'd,'Date_2'd);
我是否使用了正确的功能
将变量“month\u from”添加到示例数据集中如何?这似乎满足了您的要求…无法判断是否需要将日期1和日期2从字符转换为数字(日期)…因此我也包含了该代码 (也不必费心测试INTCK date变量是否需要在当月1号才能给出正确的结果)
谢谢,我之前意识到问题在于日期格式的不同。函数的作用是:修复这个问题。谢谢
data have;
length date_1 $18 date_2 $8;
infile datalines delimiter=',';
input date_1 $ date_2 $;
datalines;
10FEB2010:00:00:00,02/07/08
10FEB2010:00:00:00,03/10/08
10FEB2010:00:00:00,04/07/08
24MAY2010:00:00:00,05/09/08
24MAY2010:00:00:00,06/11/08
24MAY2010:00:00:00,07/11/08
;
data want (drop=date_1 date_2 dt);
set have;
dt=input(date_1,datetime.);
date1=datepart(dt);
date2=input(date_2,mmddyy10.);
month_from=intck('month',intnx('month',date1,0,'b'),intnx('month',date2,0,'b'));
format date1 date2 mmddyy10.;
run;