首页 > 解决方案 > SAS 表中的序列

问题描述

我正在寻找向我的 sas 数据集添加一个序列列,但要根据 ids 和交易日期。为了说明,下面是我所指的表格:

ID   |   TXN_DT    |    
01   |  01JAN2020  |    
01   |  01JAN2020  |    
01   |  02JAN2020  |    
01   |  03JAN2020  |    
02   |  01JAN2020  |    
02   |  02JAN2020  |    
02   |  02JAN2020  |    
02   |  03JAN2020  |    
02   |  03JAN2020  |  

我想添加一个这样的序列:

ID   |   TXN_DT    |   SEQ  | 
01   |  01JAN2020  |    1   |
01   |  01JAN2020  |    1   |
01   |  02JAN2020  |    2   |
01   |  03JAN2020  |    3   |
02   |  01JAN2020  |    1   |
02   |  02JAN2020  |    2   |
02   |  02JAN2020  |    2   |
02   |  03JAN2020  |    3   |
02   |  03JAN2020  |    3   |

我正在尝试运行以下代码,但它似乎向上跳了一行,而不是复制前一行的值,而是跳到上面的 2 行。

data want;
set have;
by id;
if first.id then seq=1;
else seq+1;
if txn_dt=lag(txn_dt) then seq = lag(seq);
keep id seq txn_dt;
run;

有什么帮助吗?提前致谢!

标签: sassequencedatastep

解决方案


尝试

if first.id then seq=0;
seq + (first.id or txn_dt ne lag(txn_dt);

推荐阅读