首页 > 解决方案 > 计算一个变量在一个月内的数量

问题描述

如果我有每个日期的频率,我如何计算每个唯一月份的频率总和?

例子:

前:

 df <- data.frame(
   Date = c('2010-01-15','2010-01-25','2010-02-12','2010-03-15','2010-03-11','2011-01-12'),
   Freq = c(1,1,1,1,0,1)
 )

后:

 df_output = data.frame(
   Month = c(1,2,3,13),
   Total = c(2,1,1,1)
 )

注意:我不想将不同年份的同一月份相加,我希望将它们分开对待。因此示例中的月份为 13。

感谢您的任何帮助

标签: rdataframe

解决方案


一个更简单的选择是转换为年月并按总和进行分组(如果需要,可以通过从“年”中减去来获得first“月”)

library(dplyr)
library(zoo)
library(lubridate)
df %>%
    group_by(yearmon = as.yearmon(Date)) %>%
    summarise(n = sum(Freq)) %>%
    transmute(year = year(yearmon), 
        Month= 12 * (year - first(year)) + month(yearmon), n, year = NULL )
# A tibble: 4 x 2
#  Month     n
#  <dbl> <dbl>
#1     1     2
#2     2     1
#3     3     1
#4    13     1

推荐阅读