【发布时间】:2014-08-11 13:38:09
【问题描述】:
下面我定义了一个尺寸为 12x5 的主数据集。我把它分成四个data.tables,我想合并它们。 data.tables 之间没有行 ID 重叠,并且某些列名重叠。当我合并它们时,merge() 无法识别列名匹配,并为每个 data.table 中的每一列创建新列。最终合并的 data.table 应该是 12x5,但它是 12x7。我认为data.table的merge()中的all=TRUE命令可以解决这个问题。
library(data.table)
a <- data.table(id = c(1, 2, 3), C1 = c(1, 2, 3))
b <- data.table(id = c(4, 5, 6), C1 = c(1, 2, 3), C2 = c(2, 3, 4))
c <- data.table(id = c(7, 8, 9), C3 = c(5, 2, 7))
d <- data.table(id = c(10, 11, 12), C3 = c(8, 2, 3), C4 = c(4, 6, 8))
setkey(a, "id")
setkey(b, "id")
setkey(c, "id")
setkey(d, "id")
final <- merge(a, b, all = TRUE)
final <- merge(final, c, all = TRUE)
final <- merge(final, d, all = TRUE)
names(final)
dim(final) #outputs correct numb of rows, but too many columns
【问题讨论】:
标签: r merge data.table