【发布时间】:2019-05-21 16:05:45
【问题描述】:
我想在 R 中匹配两个相似的数据框。两个 dfs 都有部分相同的变量和一个键 (id),其中包含缺失值:
library(tidyverse)
df1 <- as_tibble(list(id = seq(1:6),
v1 = c(1, 0, NA, 1, 0, NA),
v2 = c(NA, NA, 0, 0, 1, NA),
v3 = c(1, 0 , 1, 1, 1, NA)))
df1
# A tibble: 6 x 4
id v1 v2 v3
<int> <dbl> <dbl> <dbl>
1 1 1 NA 1
2 2 0 NA 0
3 3 NA 0 1
4 4 1 0 1
5 5 0 1 1
6 6 NA NA NA
df2 <- as_tibble(list(id = seq(1:6),
v1 = c(1, NA, 0, 1, 0, 1),
v2 = c(1, 0, 0, NA, 1, 1),
v4 = c(0, 1, 0, NA, NA, NA)))
df2
# A tibble: 6 x 4
id v1 v2 v4
<int> <dbl> <dbl> <dbl>
1 1 1 1 0
2 2 NA 0 1
3 3 0 0 0
4 4 1 NA NA
5 5 0 1 NA
6 6 1 1 NA
我想将它们合并成一个如下所示的 df:
id v1 v2 v3 v4
<int> <dbl> <dbl> <dbl> <dbl>
1 1 1 1 1 0
2 2 0 0 0 1
3 3 0 0 1 0
4 4 1 0 1 NA
5 5 0 1 1 NA
6 6 1 1 NA NA
到目前为止,我已经尝试了各种来自 dplyr 的连接,但不知何故我没有得到它。
【问题讨论】:
-
如果使用id列进行合并,匹配列v1和v2的合并规则是什么?您是取 df1 还是 df2 的平均值、求和值?
-
对于第 v2 行第 6 列中的预期结果,它说不适用,这应该是 1 吗?
-
Dave2e:它应该是任何有效值,来自 df1 或 df2。
-
MKa:你说得对,改正了。