空小时dplyr为零的小时和

空小时dplyr为零的小时和,r,dplyr,R,Dplyr,我有一个类似于下面“my_data”格式的数据集,其中每一行都是一个事件的单个计数。我想获得每小时发生多少事件的摘要。我希望没有事件的每小时都包含一个0作为其“小时总数”值 如图所示,我可以使用dplyr实现这一点,但是空小时数将被删除,而不是设置为0 谢谢大家! set.seed(123) library(dplyr) library(lubridate) latemail <- function(N, st="2012/01/01", et="2012/1/31") {

我有一个类似于下面“my_data”格式的数据集,其中每一行都是一个事件的单个计数。我想获得每小时发生多少事件的摘要。我希望没有事件的每小时都包含一个0作为其“小时总数”值

如图所示,我可以使用dplyr实现这一点,但是空小时数将被删除,而不是设置为0

谢谢大家!

set.seed(123)
library(dplyr)
library(lubridate)

latemail <- function(N, st="2012/01/01", et="2012/1/31") {
       st <- as.POSIXct(as.Date(st))
       et <- as.POSIXct(as.Date(et))
       dt <- as.numeric(difftime(et,st,unit="sec"))
       ev <- sort(runif(N, 0, dt))
       rt <- st + ev
   }

my_data <- data_frame( fake_times = latemail(25),
                   count = 1)

my_data %>% group_by( rounded_hour = floor_date(fake_times, unit = "hour")) %>%
            summarise( hourly_total = sum(count))
set.seed(123)
图书馆(dplyr)
图书馆(lubridate)

latemail将您的计数分配给一个对象

counts <- my_data %>% group_by( rounded_hour = floor_date(fake_times, unit = "hour")) %>%
    summarise( hourly_total = sum(count))
加入并填写
NA
s

complete_data %>% group_by( rounded_hour = floor_date(hour, unit = "hour")) %>%
    left_join(counts) %>%
    mutate(hourly_total = ifelse(is.na(hourly_total), 0, hourly_total))

令人惊叹的!我对您的最后一部分做了一些修改,以便在连接后使用ungroup()去掉几个小时的额外变量,然后使用transmute()而不是mutate()。干杯
complete_data %>% group_by( rounded_hour = floor_date(hour, unit = "hour")) %>%
    left_join(counts) %>%
    mutate(hourly_total = ifelse(is.na(hourly_total), 0, hourly_total))