根据最后和当前观测变量值创建变量
问题描述:
基于下面的简化数据集,如果最后一次观测by
变量id
的默认值= 1,并且如果X1 = X2,我想创建一个等于1的新变量X3 ,else
X3 = 0根据最后和当前观测变量值创建变量
data example;
input id default X1 X2;
cards;
1 0 0 1
1 0 0 1
1 0 1 1
1 0 0 1
1 1 0 1
2 0 0 1
2 0 1 1
2 0 0 1
2 0 0 1
2 1 0 1
3 0 0 1
3 0 1 1
;
run;
新的数据集应该看起来像下面这样:
id default X1 X2 X3;
1 0 0 1 0
1 0 0 1 0
1 0 1 1 1
1 0 0 1 0
1 1 0 1 0
2 0 0 1 0
2 0 1 1 1
2 0 0 1 0
2 0 0 1 0
2 1 0 1 0
3 0 0 1 0
3 0 0 1 0
我已经尝试了不少东西,一直无法找到任何解决方案。任何建议将不胜感激!
答
双DOW环是去这里的路:
data want;
do _n_ = 1 by 1 until (last.ID);
set example;
by ID;
if last.ID and default = 1 then last_default = 1;
drop last_default;
end;
do _n_ = 1 to _n_;
set example;
x3 = x1 = x2 and last_default;
output;
end;
run;
你有控制顺序变量?如果我们能够翻转订单,那么最简单的方法就是先处理BY组中的第一个,而不是最后一个值。此外,请根据StackOverflow规则发布您尝试过的内容。我将编辑你的问题来格式化你的数据,但你应该在将来做。 – Reeza
要在SAS中为SO自动格式化代码,请突出显示代码并点击TAB。它会自动缩进,所以当你粘贴它时,它的格式是正确的。 – Reeza