【发布时间】:2012-04-12 16:35:03
【问题描述】:
我有以下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.frame ab 将如下所示:
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]
【问题讨论】:
标签: r merge dataframe plyr data.table