合并多个数据帧,保持日期排序

时间:2017-03-26 23:10:11

标签: arrays dataframe merge

在R中,我有4个具有不同日期和PL值的数据框:

head(Array1)给出:

       Dates   P&L
1 2014-10-01   900
2 2014-10-02 -3185
3 2014-10-03  3800
4 2014-10-07 -2300
5 2014-10-08  2100
6 2014-10-09  2400

head(array2)给出:

       Dates      P&L
1 2015-03-02  -6962.5
2 2015-03-03 -14237.5
3 2015-03-04   7862.5
4 2015-03-05    925.0
5 2015-03-09  -3725.0
6 2015-03-10    262.5

head(array3)给出:

       Dates   P&L
1 2014-10-08  7160
2 2014-10-09  7600
3 2014-10-10  2260
4 2014-10-13  4820
5 2014-10-15 -1500
6 2014-11-06  3030

head(array4)给出:

       Dates    P&L
1 2015-02-24   1245
2 2015-03-06  10650
3 2015-03-10   -200
4 2015-04-17  -9690
5 2015-05-15 -28740
6 2015-05-26   3970

我想在一个数组中聚合所有这些数组,在一个日期有多个值时保持日期排序和求和。有人可以帮帮我吗?乔

1 个答案:

答案 0 :(得分:1)

一种选择是将rbind所有数据框合并为一个数据框,然后将这些值汇总到Dates

agg <- aggregate(`P&L` ~ Dates, rbind(array1, array2, array3, array4), FUN = sum)

agg[order(as.Date(agg$Dates)),]

#        Dates      P&L
#1  2014-10-01    900.0
#2  2014-10-02  -3185.0
#3  2014-10-03   3800.0
#4  2014-10-07  -2300.0
#5  2014-10-08   9260.0
#6  2014-10-09  10000.0
# ...

或者将四个数组放在一个列表中,使用do.call(rbind, ...将数据框绑定在一起:

lst <- list(array1, array2, array3, array4)
agg <- aggregate(`P&L` ~ Dates, do.call(rbind, lst), FUN = sum)

agg[order(as.Date(agg$Dates)),]