如何在 r 中按周对数据进行分组(带有示例)
您可以使用基本 R 中的strftime()函数和参数“ %V ”,在 R 中按周对数据进行分组。
该函数使用以下基本语法:
df$week_num <- strftime(df$date, format = " %V ")
下面的例子展示了如何在实际中使用这个功能。
示例:在 R 中按周对数据进行分组
假设我们在 R 中有以下数据框,显示不同日期的商品总销售额:
#create data frame df <- data. frame (date=as. Date (c('1/8/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-08 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
我们可以使用以下代码添加显示每个日期的周数的列:
#add column to show week number
df$week_num <- strftime(df$date, format = " %V ")
#view updated data frame
df
date sales week_num
1 2022-01-08 8 01
2 2022-01-09 14 01
3 2022-02-10 22 06
4 2022-02-15 23 07
5 2022-03-05 16 09
6 2022-03-22 17 12
7 2022-03-27 23 12
注意:根据文档, %V%计算日期数字的方式如下: “一年中的周数(星期一作为一周的第一天)作为十进制 [01,53]”。如果包含 1 月 1 日的那周在新的一年中有 4 天或更多天,则将其视为第 1 周。否则,它是上一年的最后一周,下一周是第 1 周。
创建此新列后,我们可以根据周数对值进行分组。
例如,我们可以使用以下代码来计算按周分组的销售额总和:
library (dplyr)
#calculate sum of sales, grouped by week
df %>%
group_by(week_num) %>%
summarize(total_sales = sum(sales))
# A tibble: 6 x 2
week_num total_sales
1 01 22
2 06 22
3 07 23
4 09 16
5 12 40
从结果我们可以看出:
- 第 1 周的销售总额为22 。
- 第 6 周的销售总额为22 。
- 第 7 周的销售总额为23 。
等等。
我们还可以使用另一个指标来聚合数据。
例如,我们可以使用以下代码来计算按周分组的平均销售额:
library (dplyr)
#calculate mean of sales, grouped by week
df %>%
group_by(week_num) %>%
summarize(mean_sales = mean(sales))
# A tibble: 5 x 2
week_num mean_sales
1 01 11
2 06 22
3 07 23
4 09 16
5 12 20
从结果我们可以看出:
- 第一周的平均销量为11 。
- 第 6 周的平均销量为22 。
- 第 7 周的平均销量为23 。
等等。
其他资源
以下教程解释了如何在 R 中执行其他常见任务: