为R中缺少的值填充零

为R中缺少的值填充零,r,tibble,R,Tibble,我正在努力解决这个问题。 我有一个带有日期列的df,我想计算每小时的发生次数。以下是我所做的: x <- df %>% mutate(hora = hour(date)) %>% select(hora) %>% count(hora) 我尝试创建一个包含小时数0:23和所有n=0的表,并尝试将这两个表相加,但显然不起作用。我还尝试了x$hour您可以将hora转换为因子,并在计数中使用.drop=FALSE library(dplyr) librar

我正在努力解决这个问题。 我有一个带有日期列的df,我想计算每小时的发生次数。以下是我所做的:

x <- df %>% 
  mutate(hora = hour(date)) %>% 
  select(hora) %>% 
  count(hora)

我尝试创建一个包含小时数
0:23
和所有
n=0
的表,并尝试将这两个表相加,但显然不起作用。我还尝试了
x$hour您可以将
hora
转换为
因子
,并在
计数中使用
.drop=FALSE

library(dplyr)
library(lubridate)

df %>%  
   mutate(hora = factor(hour(date), levels = 0:23)) %>%  
   count(hora, .drop = FALSE)
另一个选项是使用
complete

df %>%  
  mutate(hora = hour(date)) %>%  
  count(hora) %>%
  tidyr::complete(hora = 0:23, fill = list(n = 0))

Base R中的解决方案将小时向量与汇总数据合并,并将缺少的计数设置为0

textFile <- "row hour count
1     0     1
 2     1     1
 3     3     1
 4     8     4
 5     9     7
 6    10    10
 7    11    14
 8    12    10
 9    13     8
10    14     4
11    15     5
12    16    12
13    17     4
14    18    12
15    19     9
16    20     5
17    21     2
18    22     4
19    23     4"

data <- read.table(text = textFile,header = TRUE)[-1]
hours <- data.frame(hour = 0:23)
merged <- merge(data,hours,all.y = TRUE)
merged[is.na(merged$count),"count"] <- 0

n
如何将0从1更改为12?我认为示例输出与给定输入不匹配,它只是说明性的
df %>%  
  mutate(hora = hour(date)) %>%  
  count(hora) %>%
  tidyr::complete(hora = 0:23, fill = list(n = 0))
textFile <- "row hour count
1     0     1
 2     1     1
 3     3     1
 4     8     4
 5     9     7
 6    10    10
 7    11    14
 8    12    10
 9    13     8
10    14     4
11    15     5
12    16    12
13    17     4
14    18    12
15    19     9
16    20     5
17    21     2
18    22     4
19    23     4"

data <- read.table(text = textFile,header = TRUE)[-1]
hours <- data.frame(hour = 0:23)
merged <- merge(data,hours,all.y = TRUE)
merged[is.na(merged$count),"count"] <- 0
> head(merged)
  hour count
1    0     1
2    1     1
3    2     0
4    3     1
5    4     0
6    5     0
>