【发布时间】:2018-12-02 19:24:16
【问题描述】:
我正在寻找一种根据标志变量打印当前、领先和滞后观察的方法。如果一个观察被标记,我想打印那个观察,加上它的滞后行和前导行。
有:
ID VAR1 VAR2 Flag
--------------------------------------
ID1 1 15 .
ID1 2 14 1
ID1 3 13 .
ID1 4 12 .
ID2 5 11 .
ID2 6 10 .
ID2 7 9 1
ID2 8 8 .
ID2 9 7 .
ID3 10 6 .
ID3 11 5 1
ID3 12 4 .
ID3 13 3 .
ID3 14 2 1
ID3 15 1 .
想要:
ID VAR1 VAR2 Flag
--------------------------------------
ID1 1 15 .
ID1 2 14 1
ID1 3 13 .
ID2 6 10 .
ID2 7 9 1
ID2 8 8 .
ID3 10 6 .
ID3 11 5 1
ID3 12 4 .
ID3 13 3 .
ID3 14 2 1
ID3 15 1 .
我已经尝试过Proc Expand 函数,但由于此过程无法处理缺失值,因此不适用于我的工作案例。
另一种方法是将数据集排序为所需的顺序,然后创建一个变量,按顺序对每一行进行编号——根据标志打印当前行 +1,-1。
是否有更直接的方法可以根据标志获得由当前行、滞后行和前导行组成的数据集?
【问题讨论】:
标签: sas