【问题标题】:R , how to Aggregate data with same date field in an R dataframeR,如何在 R 数据框中聚合具有相同日期字段的数据
【发布时间】:2015-03-25 20:14:57
【问题描述】:

您好,我有一个如下所示的 R 数据框:

        SURVEY.DATE A   B   C
1898    2010-05-13  38  34  21
1899    2010-05-13  38  33  21
1897    2010-05-14  37  34  21
1895    2010-05-21  38  29  21
1896    2010-05-21  39  32  21
1894    2010-05-23  39  32  21

我想对具有相同日期的行进行平均,以便每天平均观察一次。理想情况下,我希望得到一个看起来像这样的 xts 对象:

        SURVEY.DATE    A      B  C
1898    2010-05-13    38   33.5 21
1897    2010-05-14    37     34 21
1896    2010-05-21  38.5   30.5 21
1894    2010-05-23    39     32 21

似乎对我的新手 R 技能来说是一个挑战...任何帮助/指点将不胜感激

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    你可以试试

    library(dplyr)
    res <- df1 %>%
             group_by(SURVEY.DATE) %>% 
             summarise_each(funs(mean))
    

    或者

    res1 <- aggregate(.~SURVEY.DATE, df1, mean)
    

    然后将其转换为xts

    library(xts)
    xts(res1[-1], order.by= as.Date(res1[,1]))
    #             A    B  C
    #2010-05-13 38.0 33.5 21
    #2010-05-14 37.0 34.0 21
    #2010-05-21 38.5 30.5 21
    #2010-05-23 39.0 32.0 21
    

    【讨论】:

      【解决方案2】:

      这是我使用data.table 的方法。

      require(data.table)
      setDT(df)[, lapply(.SD, mean), by=SURVEY.DATE]
      #    SURVEY.DATE    A    B  C
      # 1:  2010-05-13 38.0 33.5 21
      # 2:  2010-05-14 37.0 34.0 21
      # 3:  2010-05-21 38.5 30.5 21
      # 4:  2010-05-23 39.0 32.0 21
      

      如果您想了解更多信息,请查看new HTML vignettes

      【讨论】:

        猜你喜欢
        • 2015-05-27
        • 2021-11-17
        • 1970-01-01
        • 2016-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-02
        相关资源
        最近更新 更多