楼主: 慕目穆木
2837 1

[问答] R中如何给缺失行数的数据进行赋值? [推广有奖]

  • 0关注
  • 1粉丝

已卖:20份资源

硕士生

20%

还不是VIP/贵宾

-

威望
0
论坛币
56 个
通用积分
0.0001
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
5016 点
帖子
91
精华
0
在线时间
150 小时
注册时间
2016-9-8
最后登录
2019-2-25

楼主
慕目穆木 学生认证  发表于 2017-10-29 12:10:45 |AI写论文
3论坛币
  1. rb<-read.csv("riesby.csv",header=T,sep=",",na.strings="-9")  
  2. library(lme4)
  3. b22<-lmer(hamd~week+(week|id),rb)
  4. dd2<-predict(b22)   #得到预测值,但是有缺失值的行没有进行预测
复制代码
  1. v<-which(is.na(rb[,2]))   #给出缺失值所在的行数
复制代码
> v
[1]  30  35  48  49  55  67 132 151 158 161 178 204 209 212 228 252 279 302 307 330 372
>dd2
26  22.54090387
27  21.18932703
28  19.83775020
29  18.48617337 #第三十行和第三十五行是没有的
31  22.96214123
32  20.15535629
33  17.34857136
34  14.54178642
36   8.92821656
37  21.55749904
38  18.37725483
39  15.19701062


> nrow(dd2)
[1] 375       #本来应该有396行

  1. dd2[v]<-NA     #给第V行赋值给NA
复制代码
29  18.48617337
31           NA
32  20.15535629
33  17.34857136
34  14.54178642
36   8.92821656
37           NA                 
38  18.37725483
39  15.19701062
40  12.01676641
41   8.83652220
42   5.65627800
43  22.83413859
44  22.26450828
45  21.69487796
46  21.12524764
47  20.55561733
50  17.54573494
51  14.63049476
52           NA
53           NA

问题就在这,他并不是按照前面标记的序列的第三十行变成缺失值,而是将预测值里面实际的第三十行变成了缺失值,我要怎么做才能将那些缺失值加入到这些预测值中呢?

最佳答案

糯米JI 查看完整内容

你要知道,dd2中的29 31 ...并不代表着与之对应的预测结果在dd2中的顺序。 举个例子,dd2中的“31 22.96214123”是第30位数据,“36 8.92821656”是第34位数据 不要混淆 为了避免这种问题,在对数据进行预处理的时候,可以用na.omit()先忽略数据集中的缺失值,再进行后面的操作
关键词:R语言 缺失值

回帖推荐

糯米JI 发表于2楼  查看完整内容

你要知道,dd2中的29 31 ...并不代表着与之对应的预测结果在dd2中的顺序。 举个例子,dd2中的“31 22.96214123”是第30位数据,“36 8.92821656”是第34位数据 不要混淆 为了避免这种问题,在对数据进行预处理的时候,可以用na.omit()先忽略数据集中的缺失值,再进行后面的操作

沙发
糯米JI 发表于 2017-10-29 12:10:46
你要知道,dd2中的29 31 ...并不代表着与之对应的预测结果在dd2中的顺序。
举个例子,dd2中的“31  22.96214123”是第30位数据,“36   8.92821656”是第34位数据
不要混淆
为了避免这种问题,在对数据进行预处理的时候,可以用na.omit()先忽略数据集中的缺失值,再进行后面的操作
已有 1 人评分经验 论坛币 热心指数 收起 理由
admin_kefu + 30 + 10 + 1 热心帮助其他会员

总评分: 经验 + 30  论坛币 + 10  热心指数 + 1   查看全部评分

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

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