需要通过多个公共列合并多个数据帧

时间:2015-03-30 22:36:03

标签: r merge dataframe

我有5个不同年份的常见数据框:

2010  
POLY STRA  Spp  breeders2010 nonbreeders2010   
1      1   mall     20             5  
1      1   cite     6              0  
1      3   mall     10             0   
2      1   gadw     6              2   

2011  
POLY STRA  Spp  breeders2011 nonbreeders2011   
1      1   mall     24             2  
1      1   cite     8              2  
1      3   mall     14             4   
2      1   gadw     8              4  

2012  
POLY STRA  Spp  breeders2012 nonbreeders2012   
1      1   mall     20             5  
1      1   cite     6              0  
1      3   mall     10             0   
2      1   gadw     6              2  

我需要按POLYSTRASpp合并这5个数据框,以便最终结果如下:

POLY STRA  Spp  breeders2010 nonbreeders2010 breeders2011 nonbreeders2011 breeders2012 nonbreeders2012 breeders2013 nonbreeders2013 breeders2014 nonbreeders2014     
1      1   mall     20            5               24            2             20             5 .....  
1      1   cite     6             0               8             2             6              0 ......  
1      3   mall     10            0               14            4             10             0 .....  
2      1   gadw     6             2               8             4             6              2 .....  

我尝试过merge和cbind,但我无法让列正确排列。

1 个答案:

答案 0 :(得分:2)

我认为merge应该没问题。 对于多个数据框,您可以使用Reduce

Reduce(merge, list(df1, df2, df3, df4, df5))

如果任何数据框中有任何缺失的行all = TRUE可能会有所帮助:

Reduce(function(x, y) merge(x, y, all = TRUE), list(df1, df2, df3, df4, df5))