【问题标题】:Group by weekly data and summarize by month in R with dplyr使用 dplyr 在 R 中按周数据分组并按月汇总
【发布时间】:2021-03-03 09:41:06
【问题描述】:

我有一个dataset 的每周抵押贷款利率数据。

数据看起来很简单:

library(tibble)
library(lubridate)

df <- tibble(
  Date = as_date(c("2/7/2008 ", "2/14/2008", "2/21/2008", "2/28/2008", "3/6/2008"), format = "%m/%d/%Y"),
  Rate = c(5.67, 5.72, 6.04, 6.24, 6.03)
)

我正在尝试按月对其进行分组和总结。

blogpostthis answer 不是我想要的,因为它们只是添加了月份列。

他们给我输出:

month         Date     summary_variable
2008-02-01  2008-02-07  5.67        
2008-02-01  2008-02-14  5.72        
2008-02-01  2008-02-21  6.04        
2008-02-01  2008-02-28  6.24    

我想要的输出(最好是当月的最后一天):

Month  Average rate
2/28/2008   6
3/31/2008   6.1
4/30/2008   5.9

在上面的输出中我放的是随机数,而不是真实的计算。

【问题讨论】:

    标签: r dplyr time-series tidyverse lubridate


    【解决方案1】:

    我们可以将月份提取为列并按平均值进行分组

    library(dplyr)
    library(lubridate)
    library(zoo)
    df1 %>%
      group_by(Month = as.Date(as.yearmon(mdy(DATE)), 1)) %>% 
      summarise(Average_rate = mean(MORTGAGE30US))
    

    -输出

    # A tibble: 151 x 2
    #   Month      Average_rate
    #   <date>            <dbl>
    # 1 2008-02-29         5.92
    # 2 2008-03-31         5.97
    # 3 2008-04-30         5.92
    # 4 2008-05-31         6.04
    # 5 2008-06-30         6.32
    # 6 2008-07-31         6.43
    # 7 2008-08-31         6.48
    # 8 2008-09-30         6.04
    # 9 2008-10-31         6.2 
    #10 2008-11-30         6.09
    # … with 141 more rows
    

    【讨论】:

    • @AnakinSkywalker 在您描述的帖子中应该是本月的最后一天。我的更新就是这样做的
    • @AnakinSkywalker 我很难理解预期输出是基于显示的完整数据集还是您作为 iinput 提供的示例。如果它是您帖子中的示例。你没有四月份的数据
    • @AnakinSkywalker 我试过你的原始数据。对于第一个数据点,我得到的平均值是 5.92 而不是 6。你能显示你的计算吗
    • @AnakinSkywalker 如果是这样的话,它给了我预期的
    • 您的输出看起来很完美,正在尝试复制它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多