楼主: 勒赫尔线
1231 6

[有偿编程] 缺失值填补 [推广有奖]

  • 0关注
  • 0粉丝

高中生

17%

还不是VIP/贵宾

-

威望
0
论坛币
70 个
通用积分
1.4500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
601 点
帖子
8
精华
0
在线时间
41 小时
注册时间
2015-7-28
最后登录
2023-9-25

楼主
勒赫尔线 发表于 2021-11-13 16:14:21 |AI写论文
200论坛币
微信图片_20211113161133.png
红色方框圈住的观测是来自于同一个家庭,他们的householdID是一样的,所以变量children_meet也应该是一样的。在实际的问卷调查中,对于children_meet变量,一个家庭只调查了一个家庭成员,如何参照另一个家庭成员来补齐数据中的NA呢?
注:实际样本量约为20000个。

最佳答案

nieqiang110 查看完整内容

基本思路是先搞出每个家庭的children_meet变量,然后去除缺省值,再每个家庭找一个值,形成新数据。将该数据与原来的数据匹配。我发过代码了,审核不让通过。可以私聊我。
关键词:缺失值填补 缺失值 household Children House R语言 缺失值替换

沙发
nieqiang110 学生认证  发表于 2021-11-13 16:14:22
基本思路是先搞出每个家庭的children_meet变量,然后去除缺省值,再每个家庭找一个值,形成新数据。将该数据与原来的数据匹配。我发过代码了,审核不让通过。可以私聊我。

藤椅
owenqi 在职认证  学生认证  发表于 2021-11-14 06:54:29
你可以尝试使用dplyr的group_by和tidyr的fill配合一下,举个例子
  1. df <- data.frame(id = 1:9,
  2.                  houseid = rep(1:3, each = 3),
  3.                  child = c(NA, 1, 1, 2, NA, 2, 3, 3, NA))

  4. library(dplyr)
  5. library(tidyr)

  6. df1 <- df %>% group_by(houseid) %>% fill(child, .direction = "downup")
复制代码

板凳
nieqiang110 学生认证  发表于 2021-11-16 07:57:52
owenqi 发表于 2021-11-14 06:54
你可以尝试使用dplyr的group_by和tidyr的fill配合一下,举个例子
owenqi老师好,tidyr这个语句是以缺省值下紧邻的数据填补。如果家庭最后一个成员有数据,这个语句就不对了

报纸
勒赫尔线 发表于 2021-11-16 11:11:20
nieqiang110 发表于 2021-11-16 09:41
基本思路是先搞出每个家庭的children_meet变量,然后去除缺省值,再每个家庭找一个值,形成新数据。将该数据 ...
按照您的思路已解决了,先生成只有household和children-meet的数据集,然后删除缺失值,形成类似于字典的文件,然后借助的dplyr中的full-joint函数进行合并即可。
谢谢!

地板
勒赫尔线 发表于 2021-11-16 11:13:01
owenqi 发表于 2021-11-14 06:54
你可以尝试使用dplyr的group_by和tidyr的fill配合一下,举个例子
根据您的提示,我通过dplyr包中的full-joint函数找到了解决方法。
十分感谢!

7
owenqi 在职认证  学生认证  发表于 2021-11-17 00:06:17
nieqiang110 发表于 2021-11-16 07:57
owenqi老师好,tidyr这个语句是以缺省值下紧邻的数据填补。如果家庭最后一个成员有数据,这个 ...
我一开始也这么认为,后来我试了一下我那个例子,houseid = 3是那个情况,但是没出现发生,也许是因为他有3个的原因,是我考虑的情况不够完整,感谢指出。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 00:56