合并多个数据框并汇总重复列

时间:2016-03-23 22:34:49

标签: r

我花了很多时间环顾四周,无法找到解决我具体问题的方法。我真的很感激任何帮助。

我有一个csv文件列表,这些文件都有一个包含物种名称的列(在下面的例子中标题为“行”)。每个csv文件还有一系列样本,其中一些样本在所有csv文件中都是唯一的,其中一些存在于许多csv文件中。我正在寻找一种方法来合并所有这些csv文件在“行”变量,同时也总结出现在多个csv文件中的任何样本。

举个例子:

dfrm_1 <- data.frame(a = c("species1", "species2", "species3", "species9"), b= c(100,5,24,100), c=c(52,151,15,100))
dfrm_2 <- data.frame(a = c("species2", "species4", "species6", "species9"), b= c(4,2,500,100), c=c(67,98,153,100))
names(dfrm_1) <- c("Row", "S1", "S2")
names(dfrm_2) <- c("Row", "S2", "S4")

mDF <- merge(dfrm_1, dfrm_2, by="Row", all=TRUE)

当合并两个数据帧时,样本2(S2,它存在于两个数据帧中)变为S2.x和S2.y.我不想添加字母后缀的合并函数,而是将两列相加。

所需的输出是:

df_merge <- data.frame(a=c("species1", "species2", "species3", "species9", "species4", "species6"), b=c(100,5,24,100,0,0), c=c(52,155,15,200,2,500), d=c(0,67,0,100,98,153))
names(df_merge) <- c("Row", "S1", "S2", "S4")

注意:编辑以扩展示例并包含所需的输出

1 个答案:

答案 0 :(得分:1)

但是,您已经关闭,而不是合并要附加数据的数据。下面的代码可以为您提供所需的信息。

library(dplyr)
rbind_list(dfrm_1, dfrm_2) %>%
  group_by(Row) %>%
  mutate_each(funs(sum(., na.rm = TRUE))) %>%
  unique()