【发布时间】:2019-11-27 12:43:06
【问题描述】:
我对 R 比较陌生,但慢慢找到了自己的方式。但是我遇到了一个问题,希望有人能帮助我。
假设我有两个数据框(我们称它们为 A 和 B),都包含调查回复。 A 包含来自第一组人的所有响应。 B 包含第二组人的回答,加上第一组人的回答,但他们的回答设置为 NA。一个例子:
Dataframe A:
Household Individual Answer_A Answer_b
1 2 5 6
1 3 6 6
2 1 2 3
Dataframe B:
Household Individual Answer_A Answer_b
1 1 3 6
1 2 NA NA
1 3 NA NA
2 1 NA NA
2 2 4 7
我想获得一个包含所有个人及其响应的数据框:
Dataframe C:
Household Individual Answer_A Answer_b
1 1 3 6
1 2 5 6
1 3 6 6
2 1 2 3
2 2 4 7
如果我只有两个数据集,我可以使用 rbind.fill 和 rbind.fill(B, A) 来获取数据帧 C,因为 B 中的 NA 会被 A 中的答案覆盖。
但是...如果我必须添加第三个数据集 D,它将由 A 和 B 中的人的 NA 组成,我将无法使用此解决方案。那时我能做什么?我查看了 intersect、outersect、不同形式的连接,但似乎想不出一个好的解决方案。
有什么想法吗?
【问题讨论】:
-
你试过
merge吗?类似na.omit(merge(dfA, dfB, all = TRUE)) -
你可以只删除dfB中带有NAs的行,然后用dfA进行rbind,rbind(dfA,dfB[complete.cases(dfB),])
-
@sotos 我尝试了我的数据集,但最终得到了一个空数据框。以“正常方式”合并它们(没有
na.omit)会丢弃几乎所有观察值(从 21000 到 83),但看不出为什么保留了这 83 个。 -
不知道为什么......
-
@StupidWolf 最终被证明是最简单的解决方案。谢谢!
标签: r dataframe merge unique na