楼主: caibirdcnb
1649 5

[问答] 请问高手判断几列变量的值是否相同的时候如何排除missing?谢谢 [推广有奖]

  • 0关注
  • 37粉丝

讲师

47%

还不是VIP/贵宾

-

威望
0
论坛币
1367 个
通用积分
16.5538
学术水平
67 点
热心指数
70 点
信用等级
64 点
经验
6762 点
帖子
206
精华
2
在线时间
433 小时
注册时间
2011-8-31
最后登录
2023-9-23

楼主
caibirdcnb 发表于 2017-11-9 19:13:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
各位高手,我的数据集有var1-var20总共20个变量(或者更多),我想比较如果var1=var2=var3=...=var20则为真,否则为假。
但这些变量有missing值(不知道哪个,不知道几个,或许全部missing),如果missing就排除,例如,如果var2和var3是missing,则只比较var1=var4=var5=...=var20。

请问SAS有什么公式能比较不同变量的值并自动排除missing吗?谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:missing SSIN Miss Iss ING

已有 1 人评分热心指数 信用等级 收起 理由
eijuhz + 2 + 1 鼓励积极发帖讨论

总评分: 热心指数 + 2  信用等级 + 1   查看全部评分

沙发
Strive、 发表于 2017-11-11 14:10:28
目前没找到直接判断多个函数是否相等的,如有网友知道,麻烦告知,不甚感激。
  1. data temp;
  2.         input x1-x20@@;
  3.         cards;
  4. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  5. 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1
  6. 1 1 1 1 1 . 1 1 1 . 1 1 1 1 1 1 1 1 1 1
  7. 1 1 1 1 1 . 1 1 1 . 1 1 1 1 1 1 1 2 1 1
  8. ;
  9. run;

  10. data temp1;
  11.         set temp;
  12.         length outcome $200. var $6.;
  13.         array raw{*} x1-x20;
  14.         do i = 1 to dim(raw);
  15.                 if raw{i} ^ = . then do;
  16.                         if i = 20 then var = "var20";
  17.                         else var = "var"||compress(put(i,2.0))||"=";
  18.                         if indicate = . then indicate = raw{i};
  19.                         if raw{i} = indicate then outcome = strip(outcome)||var;
  20.                         else do;
  21.                                 outcome = "Not equal";
  22.                                 leave;
  23.                         end;
  24.                 end;
  25.         end;
  26. run;
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 30 + 3 + 3 + 3 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

藤椅
caibirdcnb 发表于 2017-11-11 14:37:30
非常感谢楼上!我的本意是找找有没有直接的函数可以用,但楼上的代码也很好。我修改了一下增加判断是不是全部missing。

  1. data temp;
  2.         input x1-x20@@;
  3.         cards;
  4. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  5. 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1
  6. 1 1 1 1 1 . 1 1 1 . 1 1 1 1 1 1 1 1 1 1
  7. 1 1 1 1 1 . 1 1 1 . 1 1 1 1 1 1 1 1 1 1
  8. . . . . . . . . . . . . . . . . . . . .
  9. 1 . . . . . . . . . . . . . . . . . . .
  10. ;
  11. run;

  12. data temp1;
  13.         set temp;
  14.         length outcome $200. var $200.;
  15.         array raw(*) x1-x20;

  16.         do i = 1 to dim(raw);
  17.                 if missing(raw[i])=0 then
  18.                         do;
  19.                                 if indicate=. then
  20.                                         indicate=raw[i];

  21.                                 if raw[i] ne indicate then
  22.                                         do;
  23.                                                 outcome="Not equal";
  24.                                                 leave;
  25.                                         end;
  26.                                 else outcome="Equal";
  27.                         end;
  28.                 else if indicate=. then
  29.                         outcome="All missing";
  30.         end;
  31. run;
复制代码

板凳
soporaeternus 发表于 2017-11-13 11:03:43
  1. data a;
  2.         length P $10;
  3.         set temp;
  4.         if nmiss(of x:)=20 then P="All miss";
  5.         else if min(of x:)=max(of x:)  then P="E";
  6.         else P="NE";
  7. run;
复制代码
已有 1 人评分论坛币 收起 理由
admin_kefu + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

报纸
caibirdcnb 发表于 2017-11-13 17:55:39
soporaeternus 发表于 2017-11-13 11:03
非常感谢!

地板
caibirdcnb 发表于 2017-11-15 19:53:38
soporaeternus 发表于 2017-11-13 11:03
请问如果是字符型呢?

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 03:27