如何在 r 中按时间对数据进行分组(带有示例)
您可以使用以下语法在 R 中按时间对数据进行分组并执行聚合:
library (dplyr) library (lubridate) #group by hours in time column and calculate sum of sales df %>% group_by(time=floor_date(time, ' 1 hour ')) %>% summarize(sum_sales=sum(sales))
此特定示例按小时将值分组到名为“小时”的列中,然后计算每个小时“销售额”列中的值的总和。
以下示例展示了如何在实践中使用此语法。
示例:R 中按时间对数据进行分组
假设我们有以下数据框,显示商店一天中不同时间的销售额:
#create data frame
df <- data. frame (time=as. POSIXct (c('2022-01-01 01:14:00', '2022-01-01 01:24:15',
'2022-01-01 02:52:19', '2022-01-01 02:54:00',
'2022-01-01 04:05:10', '2022-01-01 05:35:09')),
sales=c(18, 20, 15, 14, 10, 9))
#view data frame
df
time sales
1 2022-01-01 01:14:00 18
2 2022-01-01 01:24:15 20
3 2022-01-01 02:52:19 15
4 2022-01-01 02:54:00 14
5 2022-01-01 04:05:10 10
6 2022-01-01 05:35:09 9
我们可以使用以下语法将时间列按小时进行分组,并计算每个小时的销售额总和:
library (dplyr) library (lubridate) #group by hours in time column and calculate sum of sales df %>% group_by(time=floor_date(time, ' 1 hour ')) %>% summarize(sum_sales=sum(sales)) `summarise()` ungrouping output (override with `.groups` argument) # A tibble: 4 x 2 time sum_sales 1 2022-01-01 01:00:00 38 2 2022-01-01 02:00:00 29 3 2022-01-01 04:00:00 10 4 2022-01-01 05:00:00 9
从结果我们可以看出:
- 第一小时内共成交38笔。
- 第二小时内共成交29笔。
- 第四个小时总共卖出了10笔。
- 第 5 个小时内共成交9笔。
请注意,我们还可以执行另一个聚合。
例如,我们可以计算每小时的平均销售数量:
library (dplyr) library (lubridate) #group by hours in time column and calculate mean of sales df %>% group_by(time=floor_date(time, ' 1 hour ')) %>% summarize(mean_sales=mean(sales)) `summarise()` ungrouping output (override with `.groups` argument) # A tibble: 4 x 2 time mean_sales 1 2022-01-01 01:00:00 19 2 2022-01-01 02:00:00 14.5 3 2022-01-01 04:00:00 10 4 2022-01-01 05:00:00 9
从结果我们可以看出:
- 第一个小时的平均销量为19 。
- 第二个小时的平均销售额为14.5 。
- 第四个小时的平均销量是10 。
- 第 5 小时的平均销量为9 。
您可以随意按时间对自己的数据框进行分组,并通过修改summary()函数中的指标来计算您想要的任何特定指标。
其他资源
以下教程解释了如何在 R 中执行其他常见操作: