我需要'合并'两个不同的data.frames,它们的大小不相等但具有相同的唯一标识符(ID),我想保留较大data.frame的行数。
更重要的是,我希望data.frame.1(较大的一个)中的变量x的值对每个唯一ID求和,这样在data.frame.3(合并数据集)中,变量x的每个观察值都是最初在data.frame.1中找到的具有相同唯一标识符的观察值之和。
基本上,我希望我的合并数据集具有较小数据集(data.frame.2)-i.e的行维度。相同的观察数量 - 但我希望将较大的df(data.frame.1)中的列合并到较小的df(data.frame.2)的列中,并且我希望其值如上所述聚合(sum)。
我希望这很明确,所以下面的图表更清楚:总共有三个唯一ID(a,b,c),但在data.frame.1中,这些重复的-i想要在合并时将这些重复值相加的地方。
ID x data.frame.1
a 1
a 8
a 10
b 2
b 1
c 4
ID y data.frame.2
a 3
b 7
c 9
ID y x data.frame.3
a 3 19
b 7 3
c 9 4
答案 0 :(得分:1)
data.frame1 <- data.frame(ID = c(rep("a",3), rep("b",2), "c"),
x = c(1,8,10,2,1,4))
data.frame2 <- data.frame(ID = c("a", "b", "c"),
y = c(3, 7, 9))
data.frame1 <- aggregate(x ~ ID, data.frame1, sum)
data.frame3 <- merge(data.frame2, data.frame1, by = "ID")