如何对比两组变量(在 SAS 中) [英] How to contrast two sets of variables (in SAS)
本文介绍了如何对比两组变量(在 SAS 中)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
数据如下:
ID----X1----X2----X3----Z1----Z2----Z3
对于每个 ID,考虑两组变量 {X1, X2, X3}
和 {Z1, Z2, Z3}
:
For each ID, consider two sets of variables {X1, X2, X3}
and {Z1, Z2, Z3}
that:
- X 和 Z 的数量可能相等,也可能不相等.它们也可能有缺失值.
- 每组变量的值都是唯一的.也就是说,对于每个 ID,X1 不等于 X2 不等于 X3.这同样适用于 Zs.
- 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
.试试这个:
If I understand correctly, you need to process each array separately. First, you set X
values to missing that are not in Z
, then go back and set values in Z
that are not in X
. Try this:
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;
这篇关于如何对比两组变量(在 SAS 中)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文