数据如下:
ID----X1----X2----X3----Z1----Z2----Z3
对于每个 ID,考虑两组变量{X1, X2, X3}
and {Z1, Z2, Z3}
that:
- X和Z的数量可以相同或不同。它们也可能有缺失值。
- 每组中的变量值都是唯一的。也就是说,对于每个ID,X1不等于X2不等于X3。这同样适用于 Z。
- Xs和Zs的值可以相等,这就出现了问题。如何创建保留 Xs 和 Zs 相等值并排除不相等值的新数据。例如,如果 X1 等于任何 Z,则 X1 将与 Z 一起保留。
考虑一个假设数据:
data temp;
input ID x1 x2 x3 z1 z2 z3;
datalines;
1001 11 12 13 . 12 11
1002 21 22 23 24 25 26
1003 31 32 33 31 32 .
1004 41 42 43 41 44 45
;
run;
我希望它是:
1001 11 12 . . 12 11
1002 . . . . . .
1003 31 32 . 31 32 .
1004 41 . . 41 . .
如果我理解正确的话,您需要单独处理每个数组。首先,你设置X
缺失不在其中的值Z
,然后返回并设置值Z
那些不在X
。尝试这个:
data want;
set temp;
array Xarr{*} x:;
array Zarr{*} z:;
do _i_=1 to dim(Xarr);
if not (Xarr(_i_) in Zarr)
then Xarr(_i_) = .;
end;
do _i_=1 to dim(Zarr);
if not (Zarr(_i_) in Xarr)
then Zarr(_i_) = .;
end;
drop _i_;
run;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)