0

我有一堆看起来像这样的数据点数据。样本:

        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_from”添加到样本数据集中?

4

1 回答 1

2

这似乎可以满足您的需求...无法确定您是否需要将 date_1 和 date_2 从字符转换为数字(日期)..所以我也包含了该代码。

(也没有费心去测试 INTCK 日期变量是否需要在当月 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;
于 2012-07-16T19:37:09.943 回答