【问题标题】:Combining time series data into a single data frame将时间序列数据组合成一个数据框
【发布时间】:2015-08-27 09:42:25
【问题描述】:

我有多个如下所示的数据框:

> head(Standard.df)
   Count.S       Date      Month       Week       Year
552     15 2008-01-01 2008-01-01 2007-12-31 2008-01-01
594     11 2008-01-02 2008-01-01 2007-12-31 2008-01-01
1049    10 2008-01-03 2008-01-01 2007-12-31 2008-01-01
511     12 2008-01-04 2008-01-01 2007-12-31 2008-01-01
717     10 2008-01-06 2008-01-01 2007-12-31 2008-01-01
1744     3 2008-01-07 2008-01-01 2008-01-07 2008-01-01

> head(Guardian.df)
     Count.G       Date      Month       Week       Year
2624       7 2006-01-02 2006-01-01 2006-01-02 2006-01-01
409       13 2006-01-03 2006-01-01 2006-01-02 2006-01-01
93        13 2006-01-04 2006-01-01 2006-01-02 2006-01-01
999       20 2006-01-05 2006-01-01 2006-01-02 2006-01-01
1387      19 2006-01-06 2006-01-01 2006-01-02 2006-01-01
2652       4 2006-01-07 2006-01-01 2006-01-02 2006-01-01
2652       4 2006-01-07 2006-01-01 2006-01-02 2006-01-01

> head(Welt.df)
     Count.W       Date      Month       Week       Year
2506       9 2006-01-02 2006-01-01 2006-01-02 2006-01-01
384       12 2006-01-03 2006-01-01 2006-01-02 2006-01-01
87        15 2006-01-04 2006-01-01 2006-01-02 2006-01-01
947        6 2006-01-05 2006-01-01 2006-01-02 2006-01-01
1313      19 2006-01-06 2006-01-01 2006-01-02 2006-01-01
2532      16 2006-01-07 2006-01-01 2006-01-02 2006-01-01

表示时间的向量在所有数据帧中具有不同的长度(有些是 10 年,有些是 8 年,依此类推)。理想情况下,我想将所有数据帧中的Count向量合并为一个,并以最长的时间向量作为起点,如果其他数据帧中没有对应的日期 - 请填写NAs

所以,是这样的:

> head(Full.df)
Count.G   Count.W   Count.S       Date      Month       Week       Year
    x         x          15 2008-01-01 2008-01-01 2007-12-31 2008-01-01
    x         x          11 2008-01-02 2008-01-01 2007-12-31 2008-01-01
    x         x          10 2008-01-03 2008-01-01 2007-12-31 2008-01-01
    x         x          12 2008-01-04 2008-01-01 2007-12-31 2008-01-01
    x         x          10 2008-01-06 2008-01-01 2007-12-31 2008-01-01
    x         x           3 2008-01-07 2008-01-01 2008-01-07 2008-01-01

这可以在 R 中实现吗?

【问题讨论】:

    标签: r date dataframe time-series


    【解决方案1】:

    你可以试试

    Reduce(function(...) merge(..., by=c('Date', 'Month', 'Week', 'Year'), 
            all=TRUE), list(Standard.df, Guardian.df, Welt.df))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 2012-07-26
      • 2018-08-12
      • 2019-03-29
      • 2021-06-10
      • 1970-01-01
      相关资源
      最近更新 更多