R:添加两个具有相同尺寸的数据框

时间:2015-05-28 20:03:41

标签: r

我有df1:

Type     CA     AR     Total
alpha    2      3        5
beta     1      5        6
gamma    6      2        8
delta    8      1        9

我有df2:

Type     CA     AR     Total
alpha    3      4        7
beta     2      6        8
gamma    9      1        10
delta    4      1        5

我想在两个数据帧中添加值,以获得1个数据帧:

    Type     CA     AR     Total
    alpha    5      7        12
    beta     3      11       14
    gamma    15     3        18
    delta    12     2        14

示例 - > (alpha,CA)= 2(来自df1)+ 3(来自df2)= 5(得到的df)

有谁知道怎么做?我认为它并不完全合并,因为merge会覆盖该值,而as,我想添加该值。

提前致谢!!

3 个答案:

答案 0 :(得分:3)

+是矢量化的,这只是R

中的一个简单操作
cbind(df1[1], df1[-1] + df2[-1])
#    Type CA AR Total
# 1 alpha  5  7    12
# 2  beta  3 11    14
# 3 gamma 15  3    18
# 4 delta 12  2    14

如果您的数据集订单不正确,可以使用match(如评论中所述)

cbind(df1[1], df1[, -1] + df2[match(df1$Type, df2$Type), -1])

答案 1 :(得分:1)

您可以将它们相加并重新添加因子列。

df_tot <- df1 + df2
df_tot$Type = df1$Type

答案 2 :(得分:0)

如果你想走那条路,你可以使用dplyr + magrittr

library("dplyr")
library("magrittr")

df1 %>% select(-type) %>%
    add(df2 %>% select(-type)) %>%
    mutate(type = df1$type)

注意:这假定df1df2以相同的方式排序。