5162 15

[学习分享] 无法在SAS中选出缺失值,用 sql 和 missing 都不行~~ [推广有奖]

  • 0关注
  • 0粉丝

大专生

73%

还不是VIP/贵宾

-

威望
0
论坛币
8 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1976 点
帖子
26
精华
0
在线时间
91 小时
注册时间
2012-5-9
最后登录
2022-11-16

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
关于在SAS中选出缺失值的问题:这是我的部分SAS dataset,col_3不全为0: (由于网站不支持上传SAS data,只能贴图啦)
aa.PNG

其中col_1都是缺失的(也可能不是缺失的,因为我记得在SAS里,字符型数据缺失值显示为空,数值型数据缺失值显示为.)。我的问题是:要怎么选出col_1是缺失的观测值?
我试了以下方法,都不行:
  1. 1. proc sql;
  2. select * from aa where col_1 is null;
  3. quit;

  4. 2. proc sql;
  5. select * from aa where col_1 = '';
  6. quit;
  7. 3.  proc sql;
  8. select * from aa where col_1 = '.' ;
  9. quit;

  10. 4. data bb;
  11. set aa; where missing(col_1);
  12. run;
复制代码
感觉这个问题还挺有意思的,有大神可以指点迷津嘛~~




二维码

扫码加我 拉你入群

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

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

关键词:SAS 缺失值

回帖推荐

learsaas 发表于10楼  查看完整内容

wwazurebaby 发表于9楼  查看完整内容

我觉得这里没有missing,你看到的.在SAS看来是有值得,如果你需要选出这些record,就可以: data whatever_1; set whatever; if compress(col_1,'') = '.'; run; 这里我把空格都去了。
沙发
lovexialulu 发表于 2017-5-16 19:30:41 来自手机 |只看作者 |坛友微信交流群
字符. 不算是missing值 它是字符“.”估计想要 data a;
set raw(where=(col_1 in ('' '.')));
run;

使用道具

藤椅
foocares 发表于 2017-5-16 21:22:01 |只看作者 |坛友微信交流群
如果是我,我会先用proc print打印下前五行,看看到底col1里放的是什么值。
其次,在sql里用is missing来判断应该没问题,因为这句对数值和字符型为空两种类型的判断都包括。

proc sql inobs=5;
     select * from aa
      where col_1 is missing;
run;

我觉得应该用view table能看到东西。

使用道具

板凳
learsaas 发表于 2017-5-17 09:44:02 |只看作者 |坛友微信交流群
上传数据集

使用道具

learsaas 发表于 2017-5-17 09:44
上传数据集
aa.zip (2 KB) 本附件包括:
  • aa.sas7bdat


解压就是数据集

使用道具

lovexialulu 发表于 2017-5-16 19:30
字符. 不算是missing值 它是字符“.”估计想要 data a;
set raw(where=(col_1 in ('' '.')));
run;
还是不行,我也觉得是字符'.', 我觉得这个方法和我之前用where col='.' 是一个道理~

使用道具

foocares 发表于 2017-5-16 21:22
如果是我,我会先用proc print打印下前五行,看看到底col1里放的是什么值。
其次,在sql里用is missing来判 ...
print 出来后col_1就是 .  
用你的代码试了下仍然查找不出来, 感觉这就像是SAS的bug

使用道具

我在四楼上传了数据集,求路过大侠们指点迷津~

使用道具

9
wwazurebaby 发表于 2017-5-17 11:06:56 |只看作者 |坛友微信交流群
我觉得这里没有missing,你看到的.在SAS看来是有值得,如果你需要选出这些record,就可以:
data whatever_1;
  set whatever;
  if compress(col_1,'') = '.';
run;

这里我把空格都去了。

使用道具

10
learsaas 发表于 2017-5-17 11:26:49 |只看作者 |坛友微信交流群
  1. data  a;
  2.         set aa;
  3.         where col_1='  .';
  4. run;
复制代码

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-11-5 23:36