Sas 根据上次和当前观测变量值创建条件变量
基于下面的简化数据集,我想创建一个新变量X3,如果上次观察Sas 根据上次和当前观测变量值创建条件变量,sas,survival-analysis,Sas,Survival Analysis,基于下面的简化数据集,我想创建一个新变量X3,如果上次观察byvariableid的默认值为1,如果X1=X2,elseX3=0,则该变量等于1 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
by
variableid
的默认值为1,如果X1=X2,else
X3=0,则该变量等于1
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
我尝试了很多事情,但都找不到任何解决办法。如有任何建议,将不胜感激 双道循环是一种方法:
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;
你有控制顺序的变量吗?如果我们可以翻转顺序,那么最简单的方法是按组处理第一个值,而不是最后一个值。另外,请根据StackOverflow规则发布您迄今为止尝试过的内容。我将编辑您的问题以格式化数据,但您以后应该这样做。要在SAS中自动格式化SO的代码,请突出显示代码并单击TAB。它将自动缩进,因此当您将其粘贴到此处时,格式正确。