如何在SAS的数据步骤中为一行添加多行
比如说,我有一张这样的桌子如何在SAS的数据步骤中为一行添加多行,sas,Sas,比如说,我有一张这样的桌子 # ID, X, Y 1, 0, 1 2, 1, 0 3, 1, 1 我的结果输出应该如下所示 # ID, X, Y, R 1, 0, 1, Y 2, 1, 0, X 3, 1, 1, X 3, 1, 1, Y 因此,您可以看到对于ID3,我们现在有两行而不是一行,因为X和Y都是一行,并且R列应该有一个值为1的所有列的条目 所以,我的问题是,如何使用SAS的数据步骤实现这种平坦化?注意,在我的例子中,X和Y都不能为零。其中至少有一个是1。使用输出语句作为IF-TH
# ID, X, Y
1, 0, 1
2, 1, 0
3, 1, 1
我的结果输出应该如下所示
# ID, X, Y, R
1, 0, 1, Y
2, 1, 0, X
3, 1, 1, X
3, 1, 1, Y
因此,您可以看到对于ID3,我们现在有两行而不是一行,因为X和Y都是一行,并且R列应该有一个值为1的所有列的条目
所以,我的问题是,如何使用SAS的数据步骤实现这种平坦化?注意,在我的例子中,X和Y都不能为零。其中至少有一个是1。使用
输出
语句作为IF-THEN
do-block子句的一部分
if x = 1 then do;
r = 'x';
output;
end;
if y = 1 then do;
r = 'y';
output;
end;
如果有许多变量需要验证,请使用变量ARRAY
array myRvars x y z p q r s t u z1-z10;
do index = 1 to dim(myRvars);
if myRvars(index) = 1 then do;
r = vname(myRvars(index));
output;
end;
end;
你还想跟踪那些不会因为X和Y都为零而变平的ID吗?@Richard在我的例子中X和Y都不能为零。