在给定特定条件的情况下添加行



我有一个包含3列的数据库。ID、日期和金额。按ID和日期排序。我想做的就是在具有相同ID的每个ID的最近一次出现之后添加一行,Date=Date+1 Month,Amount=0。

作为一个例子,我想从这个开始:

id      | Date  |amount |
A       |  01JAN|   1   |
A       |  01FEB|   1   |  
B       |  01FEB|   0   |
B       |  01MAR|   1   |

到此:

id      | Date  |amount |
A       |  01JAN|   1   |
A       |  01FEB|   1   |  
A       |  01MAR|   0   | <- ADD THIS ROW  
B       |  01FEB|   0   |
B       |  01MAR|   1   |
B       |  01APR|   0   |<- ADD THIS ROW

我知道我应该使用intxn,但除此之外,我真的不知道该怎么办。我很感激任何意见。

假设DATE变量中有实际的日期值,您只需要在每组中的最后一次观察中输出两次。

data want;
set have;
by id;
output;
if last.id then do;
date=intnx('month',date,1,'b');
amount=0;
output;
end;
run;

最新更新