如何对比两组变量(在 SAS 中) [英] How to contrast two sets of variables (in SAS)

查看:119
本文介绍了如何对比两组变量(在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆