我有以下data.frames:
a <- data.frame(id = 1:3, v1 = c('a', NA, NA), v2 = c(NA, 'b', 'c'))
b <- data.frame(id = 1:3, v1 = c(NA, 'B', 'C'), v2 = c("A", NA, NA))
> a
id v1 v2
1 1 a <NA>
2 2 <NA> b
3 3 <NA> c
> b
id v1 v2
1 1 <NA> A
2 2 B <NA>
3 3 C <NA>
注意:两个表中都没有定义 v1 或 v2 的 id;对于每个 id 值,每列中只有一个唯一的非 NA 值
我想在“id”的匹配值上合并这些数据框:
ab <- merge(a, b, by = "id")
但我也想将两列v1
和结合起来v2
,使 data.frameab
看起来像这样:
ab <- data.frame(id = 1:3, v1 = c("a", "B", "C"), v2 = c("A", "b", "c"))
> ab
id v1 v2
1 1 a A
2 2 B b
3 3 C c
相反,我得到了这个:
> merge(a, b, by = "id")
id v1.x v2.x v1.y v2.y
1 1 a <NA> <NA> A
2 2 <NA> b B <NA>
3 3 <NA> c C <NA>
data.frame
同时使用和的示例会很有帮助data.table
,因此这里是上面的 data.table 版本:
A <- data.table(a, key = 'id')
B <- data.table(b, key = 'id')
A[B]