使用 R 中的 tidyverse 函数改变每一天和每小时



目前,我的代码使用以下方法返回每天发生的大量事件:

online_toy_purchases %>%
mutate(interval = lubridate::date(date)) %>%
group_by(interval) %>%
summarise(count = n())

这当前返回以下内容:

# A tibble: 31 x 2
interval    count
2018-12-01    500
2018-12-02    300
2018-12-03    400
2018-12-04    200
2018-12-05    600
...
2018-12-31    100

我希望我的代码按每小时和每天分组,以获得更精细的数据视图,这将返回以下内容:

# A tibble: 744  x 2
interval             count
2018-12-01 01:00:00    50    
2018-12-01 02:00:00    60  
2018-12-01 03:00:00    20  
2018-12-01 04:00:00    80  
...
2018-12-31 24:00:00    10 

online_toy_purchases是一个 tibble,除其他功能外,还包含交易的 ID 和包含购买日期和小时、分钟和秒的时间戳(即 -> "2018-12-01 01:20:58")

这将计算数据每小时内的行数。

library(tidyverse)
online_toy_purchases %>%
  # assuming that "date" is formatted as a datetime variable already
  count(time = lubridate::floor_date(date, "1 hour")) %>%
  # additional step using padr::pad to add missing hours and
  #   tidyr::replace_na to make NAs into zeroes
  padr::pad() %>%
  replace_na(list(n=0))

对于可视化和进一步分析,让行记录没有数据的周期会很有帮助。您也可以通过转换为 tsibble 来完成类似的事情。

最新更新