如何在 r 中按月对数据进行分组(带有示例)


您可以使用 R 中lubridate包中的Floor_date()函数来快速按月对数据进行分组。

该函数使用以下基本语法:

 library (tidyverse)

df %>% 
    group_by(month = lubridate::floor_date(date_column, ' month ')) %>%
    summarize(sum = sum(value_column))

下面的例子展示了如何在实际中使用这个功能。

示例:在 R 中按月对数据进行分组

假设我们在 R 中有以下数据框,显示不同日期的商品总销售额:

 #create data frame
df <- data. frame (date=as. Date (c('1/4/2022', '1/9/2022', '2/10/2022', '2/15/2022',
                                '3/5/2022', '3/22/2022', '3/27/2022'), '%m/%d/%Y'),
                 sales=c(8, 14, 22, 23, 16, 17, 23))

#view data frame
df

        dirty date
1 2022-01-04 8
2 2022-01-09 14
3 2022-02-10 22
4 2022-02-15 23
5 2022-03-05 16
6 2022-03-22 17
7 2022-03-27 23

我们可以使用以下代码来计算按月分组的销售额总和:

 library (tidyverse)

#group data by month and sum sales
df %>% 
    group_by(month = lubridate::floor_date(date, ' month ')) %>%
    summarize(sum_of_sales = sum(sales))

# A tibble: 3 x 2
  month sum_of_sales
              
1 2022-01-01 22
2 2022-02-01 45
3 2022-03-01 56

从结果我们可以看出:

  • 1 月份总共售出22 辆
  • 2 月份总共售出45 辆
  • 3 月份总共售出56 辆

我们还可以使用另一个指标来聚合数据。

例如,我们可以计算一天内的最大销售额(按月分组):

 library (tidyverse)

#group data by month and find max sales
df %>% 
    group_by(month = lubridate::floor_date(date, ' month ')) %>%
    summarize(max_of_sales = max(sales))

# A tibble: 3 x 2
  month max_of_sales
              
1 2022-01-01 14
2 2022-02-01 23
3 2022-03-01 23

从结果我们可以看出:

  • 一月份单日销量最高为14 件
  • 2 月份单日销量最高为23 件
  • 3 月份单日最高销量为23 辆

您可以在summary()函数中随意使用您想要的任何指标。

其他资源

以下教程解释了如何在 R 中执行其他常见任务:

如何从R中的日期中提取年份
如何从R中的日期中提取月份
如何在 R 中按日期对数据框进行排序
如何在R中将因子转换为日期

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注