楼主: rucergo
6529 6

[原创博文] 关于sas缺失值的一个弱智问题 [推广有奖]

  • 0关注
  • 0粉丝

本科生

40%

还不是VIP/贵宾

-

威望
0
论坛币
244 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
235 点
帖子
11
精华
0
在线时间
169 小时
注册时间
2008-8-5
最后登录
2024-1-18

3论坛币
sas菜鸟有题求助:

我想做个数据检测编程
data missing;
input id $ x1 x2 x3 x4;
datalines;
1001 4 0 7 9
1002 . . 1 10
1003 . 2 . .
1004 2 9 . 0
1005 0 1 4 9
;
data failure(keep=id failure val1 val2);
set missing;
if x1<3 & x2<3 then do;
failure=1000;
val1=x1;
val2=x2;
output;
end;
run;

可是显示结果总是把缺失值给检测出来(可能由于缺失值本身是小于零的),比如 id 1002、1003 也符合if 的条件,可是含缺失值的id对我来说没有意义。我想要的是如果x1、x2 的任意一方为缺失值,则不参加运算。请各位高手指教!(另,将缺失值设置为0或者其他数值有很大风险)谢谢各位!

关键词:缺失值 missing Failure Lines Input failure 检测
沙发
shaker 发表于 2012-7-4 09:31:05 |只看作者 |坛友微信交流群
加个不等于缺失值的条件 if x1 ne .

使用道具

藤椅
rucergo 发表于 2012-7-4 10:31:02 |只看作者 |坛友微信交流群
shaker 发表于 2012-7-4 09:31
加个不等于缺失值的条件 if x1 ne .
谢谢您的回复!这样的处理可以解决简单的数据库与数量不多的检测。可问题是我的数据库很大,而且有两千多个检测(if 语句),难道我要将每个if语句中涉及的变量都添加 ne . 么?

使用道具

你的后面变量如果都是x1,x2,x3...形式的话,可以用array,做一个循环就行了,如果不是这样有规律的形式也可以做成宏变量,同样用do循环
对sas和统计感兴趣的朋友,欢迎加入群144839730

使用道具

报纸
shaker 发表于 2012-7-5 11:52:01 |只看作者 |坛友微信交流群
顶楼上的,可以用array x1-x20之类的,具体可参照以下链接
http://www.cpc.unc.edu/research/ ... s/sastopics/arrays/

使用道具

地板
ziyenano 发表于 2012-7-6 01:40:28 |只看作者 |坛友微信交流群
按楼主的方法先做出来,结果再删除有缺失值的记录;
if  nmiss(of _numeric_)>0  then delete;/*这里是删除数值变量中有缺失值的记录,也可以修改成计指定变量的缺失值个数,nmiss(var1,var2,var3....)*/

使用道具

7
playmore 发表于 2012-7-6 08:53:39 |只看作者 |坛友微信交流群
直接先把id有missing的删了就好
  1. data missing;
  2. set missing;
  3. if id ne .;
  4. run;
复制代码
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

使用道具

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

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

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

GMT+8, 2024-4-30 20:38