sas - 滞后于acct id?

时间:2015-05-14 18:10:10

标签: sas lag retain datastep

不确定我是否需要使用滞后。但这就是我想要做的事情。

以下是我的数据......

acct    sort_order        type
111111     1            standard
111111     1            standard
111111     2            non-standard
111111     3            other
111111     3            other
222222     2            non-standard
222222     3            other
222222     3            other

这就是我想要的结果......

acct     sort_order  type           want
111111       1     standard       standard
111111       1     standard       standard
111111       2     non-standard   standard
111111       3     other          standard
111111       3     other          standard
222222       2     non-standard   non-standard
222222       3     other          non-standard
222222       3     other          non-standard

我的数据集按acct和sort_order排序。对于每个acct,我想采用第一种类型(基于sort_order)并将其复制到该acct的每一行。例如,acct 111111具有"标准"作为它的第一种类型。我希望每个111111的观察都有"标准"因为它的类型。

我尝试使用滞后执行以下操作,但它并不能正常工作......

data want;
set have;
by acct;
want = lag(type);
if first.acct then want = type;
run;

1 个答案:

答案 0 :(得分:1)

您可以使用retain语句将每个值复制到下一个观察点。

Data want;
    set have;
    by accnt;
    retain want;
    if first.accnt then want = type;
run;