给定时间列,如何在 R 中创建时间箱?
Given time column, how can I create time bins in R?
给定一个包含 3 列的数据框:
date time respond
1/1/2018 15:40 1
4/5/2017 08:25 0
3/4/2016 09:00 1
5/4/2017 09:25 1
....
我想将我的时间列 say 分到 24 个分箱 - 对于我们的每个分箱,例如如果我有 50 个样本,我希望 hour1 到 hour2 之间的所有时间 (08:00 - 09:00) 到代表 08:00 小时等
现在,当我实现这一点时,我想计算每个箱子中有多少响应者:
bin08:00 = 10 个响应者
bin09:00 = 134 个响应者
并使用 ggplot2 绘制它。
另请指导我如何创建不同的 bin 映射:
从 08:00 到 12:00 上午 - 每小时垃圾箱。
12:00上午 - 15:00 每 15 分钟垃圾箱等
请指导我该怎么做。
@akrun
一种方法是使用 strptime
将您的 time
列格式化为 POSIX 对象,然后对这些对象使用 format
以四舍五入像这样的时间:
library(dplyr)
df$hour <- format(strptime(df$time, "%H:%M"), "%H:00")
df %>% group_by(hour) %>% summarize(respond = sum(respond))
# # A tibble: 3 x 2
# hour respond
# <chr> <int>
# 1 08:00 0
# 2 09:00 2
# 3 15:00 1
给定一个包含 3 列的数据框:
date time respond
1/1/2018 15:40 1
4/5/2017 08:25 0
3/4/2016 09:00 1
5/4/2017 09:25 1
....
我想将我的时间列 say 分到 24 个分箱 - 对于我们的每个分箱,例如如果我有 50 个样本,我希望 hour1 到 hour2 之间的所有时间 (08:00 - 09:00) 到代表 08:00 小时等
现在,当我实现这一点时,我想计算每个箱子中有多少响应者:
bin08:00 = 10 个响应者 bin09:00 = 134 个响应者
并使用 ggplot2 绘制它。
另请指导我如何创建不同的 bin 映射: 从 08:00 到 12:00 上午 - 每小时垃圾箱。 12:00上午 - 15:00 每 15 分钟垃圾箱等
请指导我该怎么做。
@akrun
一种方法是使用 strptime
将您的 time
列格式化为 POSIX 对象,然后对这些对象使用 format
以四舍五入像这样的时间:
library(dplyr)
df$hour <- format(strptime(df$time, "%H:%M"), "%H:00")
df %>% group_by(hour) %>% summarize(respond = sum(respond))
# # A tibble: 3 x 2
# hour respond
# <chr> <int>
# 1 08:00 0
# 2 09:00 2
# 3 15:00 1