楼主: mileo
9914 15

[missing data]怎样用平均值简单替换缺失值 [推广有奖]

  • 0关注
  • 1粉丝

本科生

4%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
1.6050
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
591 点
帖子
87
精华
0
在线时间
33 小时
注册时间
2013-2-26
最后登录
2022-5-2

楼主
mileo 发表于 2013-6-14 08:18:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有好些变量,缺失值都不超过5%,想把缺失值都替换成相对应的这个变量的平均值,怎么操作呀?
例如我的有5000个样本,100人缺失了年龄值,剩下4900人平均是30岁,怎样用30放进去缺失的那些人的年龄变量里面呢?
sas太难搞了。。。谢谢指教!!

二维码

扫码加我 拉你入群

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

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

关键词:missing SSIN Miss Data 平均值 平均值

沙发
playmore 发表于 2013-6-14 08:39:11
看下面这个链接

http://hi.baidu.com/crack_man/item/0e057bfd0d73bc26743c4c4a

另外缺失值填补还有另外的方法,可以查看proc mi
只不过也可以留着不填,这样含有缺失值的数据对均值之类的统计量没有影响,比如proc means
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

藤椅
qiangyoung 发表于 2013-6-14 08:49:03
你的数据形式是这样的吗?
people1  age name ...
people2  age name ...

还是其它形式的?

板凳
mileo 发表于 2013-6-14 11:38:11
qiangyoung 发表于 2013-6-14 08:49
你的数据形式是这样的吗?
people1  age name ...
people2  age name ...
是的
一个观察值对应一个人,有年龄 体重等等变量
现在就想把年龄缺失的用这一群人的平均年龄去填补
谢谢呵呵

报纸
mileo 发表于 2013-6-14 11:38:58
playmore 发表于 2013-6-14 08:39
看下面这个链接

http://hi.baidu.com/crack_man/item/0e057bfd0d73bc26743c4c4a
谢谢谢谢解答!!
我再好好琢磨下哈 宏变量对我这个菜鸟有点困难。。

地板
qiangyoung 发表于 2013-6-14 13:03:48
*思路就是先把数据读取到people,求得年龄总和
*然后再对people进行筛选,把后缺失值改成平均值
*age 是你要读的年龄,avg是平均年龄*count为观测总条数
data people;
INFILE ’文件路径’;
input age ;
if age ^ =. Then sumAge+age;
count+1;
run;

data people2;
set people;
if age=. then age=sumAge/count;
run;

仅供参考,在公司没有环境,不知道有没有错

7
qiangyoung 发表于 2013-6-14 21:25:56
data people;
INFILE 'D:\My SAS Files\t.dat' dlm=',';
input name $ age;
if age ^ =. then do;
sumAge+age;
count+1;
end;
run;

data people2;
set people;
if age=. then age=sumAge/count;
run;



改成这样,可能更符合题意

8
mileo 发表于 2013-6-14 23:59:06
qiangyoung 发表于 2013-6-14 21:25
data people;
INFILE 'D:\My SAS Files\t.dat' dlm=',';
input name $ age;
谢谢您的热心解答~~怒赞!!!
有人建议我用这个方法
PROC STDIZE DATA=我原来的data  REPONLY METHOD=mean OUT=outdata;
VAR age;
RUN; 好像也行哈哈

另外我有个问题,如果我的年龄是二分类的(就是按照需要,人为划分年龄层<30岁的是0,大于等于30岁的是1),那么要是用平均值来填充missing data的话,就会有0.1234(假如二分类年龄的平均值0.1234),我希望missing data要么是0 要么是1,不希望它是0.1234,这个是不是做不到啊?只能用MI?
谢谢!!


9
qiangyoung 发表于 2013-6-15 20:08:38
mileo 发表于 2013-6-14 23:59
谢谢您的热心解答~~怒赞!!!
有人建议我用这个方法
PROC STDIZE DATA=我原来的data  REPONLY METHOD ...
你想让缺失值什么时候为0,什么时候为1?

10
visiting 发表于 2013-6-15 23:21:33
proc standard data=dataset replace out=dataset_replaced;
var vars; /* 如果一次处理所有变量不需要这一条 */
run;
proc print data=dataset_replaced;
run;

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

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