楼主: beijingdizheng
6384 7

nmiss(of _numeric_)为什么显示的不对 [推广有奖]

  • 8关注
  • 8粉丝

已卖:471份资源

硕士生

78%

还不是VIP/贵宾

-

威望
0
论坛币
4433 个
通用积分
3.9600
学术水平
27 点
热心指数
25 点
信用等级
17 点
经验
4577 点
帖子
101
精华
0
在线时间
240 小时
注册时间
2012-10-9
最后登录
2022-6-21

楼主
beijingdizheng 发表于 2013-9-23 13:14:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data ff;
input a b c @@;
cards;
1 2 .
3 . .
4 4 5
;
run;

data mif;
set ff;
nmiss=nmiss(of _numeric_);
run;
为什么可以写成nmiss=nmiss(of a b c)但是写成nmiss=nmiss(of _numeric_)就出问题了
nmiss运行结果分别为2 3 1


二维码

扫码加我 拉你入群

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

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

关键词:numeric Eric Miss Iss NUM

已有 1 人评分经验 热心指数 收起 理由
webgu + 60 + 1 鼓励积极发帖讨论

总评分: 经验 + 60  热心指数 + 1   查看全部评分

沙发
pobel 在职认证  发表于 2013-9-23 13:28:04
这里的显示是没有问题的:
1. _numeric_会包含所有数值型的变量
2. 变量nmiss也是数值型的
3.函数nmiss()执行的时候变量nmiss的值是空的

data ff;
input a b c @@;
cards;
1 2 .
3 . .
4 4 5
;
run;

data mif;
set ff;
length nmiss $8;
nmiss=cats(nmiss(of _numeric_));
run;
已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
poetony + 1 + 1 + 1 观点有启发
Eternal0601 + 3 + 3 + 3 精彩帖子
Imasasor + 60 + 80 + 4 + 2 + 1 精彩帖子
beijingdizheng + 1 + 1 + 1 观点有启发

总评分: 经验 + 60  论坛币 + 80  学术水平 + 9  热心指数 + 7  信用等级 + 6   查看全部评分

和谐拯救危机

藤椅
beijingdizheng 发表于 2013-9-23 13:53:44
pobel 发表于 2013-9-23 13:28
这里的显示是没有问题的:
1. _numeric_会包含所有数值型的变量
2. 变量nmiss也是数值型的
太感谢了 谢谢你了

板凳
妖帝东皇 发表于 2013-9-23 13:58:26
楼主的程序没错啊!!
┏━━━━━━━━━━━━━━┓
   ☞❤学而无友必然孤陋寡闻!❤
┗━━━━━━━━━━━━━━┛

报纸
tangliang0905 发表于 2013-9-24 04:22:33
pobel 发表于 2013-9-23 13:28
这里的显示是没有问题的:
1. _numeric_会包含所有数值型的变量
2. 变量nmiss也是数值型的
data ff;
input a b c @@;
cards;
1 2 .
3 . .
4 4 5
;
run;

data mif;
set ff;
nmiss=nmiss(of _numeric_)-1;
run;
it looks the value of NMISS is needed to minus 1. Why? I don't know. I didn't get any helpful information from SAS help.


已有 1 人评分经验 热心指数 收起 理由
webgu + 60 + 1 热心帮助其他会员

总评分: 经验 + 60  热心指数 + 1   查看全部评分

地板
pobel 在职认证  发表于 2013-9-24 08:08:03
tangliang0905 发表于 2013-9-24 04:22
data ff;
input a b c @@;
cards;
data mif;
set ff;
nmiss=nmiss(of _numeric_)-1;
run;

在这个data步中nmiss(of _numeric_)就相当于nmiss(a,b,c,nmiss), 而变量nmiss在函数nmiss()执行时总是空的,所以变量nmiss的值会比预想的大1。

这里需要注意的是:data步中所有的变量都是在编译阶段在pdv中创建的。把例子稍微改动一下可能会清楚一点:

data ff;
input a b c @@;
cards;
1 2 .
3 . .
4 4 5
;
run;

data mif;
set ff;
put _all_;
d=nmiss(of _numeric_);
run;
已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
webgu + 80 + 80 + 3 + 3 + 3 又热心又厉害的SAS大侠
tangliang0905 + 1 + 1 + 1 精彩帖子
boe + 1 + 1 + 1 少有的以sas为乐的大侠

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

和谐拯救危机

7
bobguy 发表于 2013-9-24 09:45:39
pobel 发表于 2013-9-23 13:28
这里的显示是没有问题的:
1. _numeric_会包含所有数值型的变量
2. 变量nmiss也是数值型的
You can see it by adding
put _all_; before nmiss=nmiss(of _numeric_); as below.


179  data mif;
180  set ff;
181  put _all_;
182  nmiss=nmiss(of _numeric_);
183  run;

a=1 b=2 c=. nmiss=. _ERROR_=0 _N_=1
a=3 b=. c=. nmiss=. _ERROR_=0 _N_=2
a=4 b=4 c=5 nmiss=. _ERROR_=0 _N_=3

8
秋秋千 发表于 2013-10-1 23:17:58
学习了~

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

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