2

我想我的问题并没有我想的那么清楚。我会尽力解释我的问题:

我有一张客户和日期表。我使用 LAG 函数来检索以前的日期,以确定日期中是否存在“漏洞”:

    Customer        Prev_date                       Date                    Missing_ind
    1               01dec2004:00:00:00              01jan2005:00:00:00             0
    1               01jan2005:00:00:00              01feb2005:00:00:00             0
    1               01feb2005:00:00:00              01apr2005:00:00:00             1
    2               01dec2004:00:00:00              01jan2005:00:00:00             0
    2               01jan2005:00:00:00              01feb2005:00:00:00             0
    2               01feb2005:00:00:00              01mar2005:00:00:00             0
    2               01mar2005:00:00:00              01jun2005:00:00:00             2
    .
    .
    .
    .

如您所见,在第 3 行中,客户 1 缺少 1 个月(2005 年 3 月),而在第 7 行中,客户 2 缺少 2 个月(2005 年 4 月,2005 年 5 月)。

有一个指标告诉我每个客户缺少多少个月(Missing_ind)

我需要做的是,为表中的所有客户完成缺失的月份,无论是准确的表,还是将行插入新表。

怎么做到呢?

谢谢你帮助我,

加尔。

4

2 回答 2

1

由于您已经确定了两个日期之间缺少的月份数,因此可以使用简单的 do 循环和 intnx 函数来完成解决方案。

data missing_dates (keep=customer missing_date );
 set dates;
 format missing_date datetime17.;
 missing_date = prev_date;
 do i=1 to missing_ind by 1;
  missing_date = intnx('dtmonth',missing_date,1,'b');
  output;
 end;
run;
于 2013-08-14T14:00:58.397 回答
1

This actually is a different question now, which is pretty easy to solve.

data have;
input Customer (prev_date date) (:datetime17.);
format prev_date date datetime19.;
datalines; 
    1               01dec2004:00:00:00              01jan2005:00:00:00            
    1               01jan2005:00:00:00              01feb2005:00:00:00            
    1               01feb2005:00:00:00              01apr2005:00:00:00            
    2               01dec2004:00:00:00              01jan2005:00:00:00            
    2               01jan2005:00:00:00              01feb2005:00:00:00            
    2               01feb2005:00:00:00              01mar2005:00:00:00            
    2               01mar2005:00:00:00              01jun2005:00:00:00   
;;;;
run;
data want;
set have;
missing_months = intck('dtMonth',prev_date,date)-1;
run;
于 2013-08-11T13:00:57.900 回答