从2个不同的数据帧中添加值以创建新的数据帧?

时间:2015-10-11 17:01:52

标签: r

抱歉,想不出更好的方式来表达这个问题。

基本上,我将如何合并类似于以下数据帧的内容

2014:

Team  Goals.Scored   Goals.Conceded
MUFC      2              4
MCFC      3              0
LFC       1              6

2015:

Team  Goals.Scored   Goals.Conceded
MUFC    4                   3
MCFC    3                   2
AVFC    1                   5

这样的东西会自动添加匹配团队的值

总体

Team  Goals.Scored  Goals.Conceded
MUFC      6             7
MCFC      6             2
LFC       1             6
AVFC      1             5

我最初使用的是一个简单的命令

new.df = 2014$Goals.Scored + 2015$Goals.Scored

但我认为只有两个数据框中的团队处于相同的顺序,并且多年来他们是同一个团队时才有效?想到做一个for循环但到目前为止都没有成功。

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:4)

如果两个数据集是' df1',' df2',我们将其放在list中,与来自rbindlist的{​​{1}}绑定},按'团队'分组,我们得到Data.table的子集data.tablesum

.SD

或者使用library(data.table) rbindlist(list(df1, df2))[,lapply(.SD, sum) ,Team] # Team Goals.Scored Goals.Conceded #1: MUFC 6 7 #2: MCFC 6 2 #3: LFC 1 6 #4: AVFC 1 5 ,我们对数据集(dplyr)进行搜索,按照' Team'进行分组,并使用{{1}获取列的bind_rows }。

sum

或者来自summarise_each的更紧凑的代码library(dplyr) bind_rows(df1, df2) %>% group_by(Team) %>% summarise_each(funs(sum)) (与上面针对大数据集描述的其他方法相比会更慢)。我们可以使用公式aggregate建议base R .上的所有其他变量。

lhs

它可以写成~