为R中的缺失值填充零

问题描述 投票:0回答:1

我正在尝试解决这个问题。我有一个带日期列的df,我想计算每小时的出现次数。这是我所做的:

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

其结果是:

> x
# A tibble: 19 x 2
    hora     n
   <int> <int>
 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

如您所见,有些小时未显示为n=0,例如2或4:7。我想要的是将x中不存在的小时数与n=0相加,以便表完成。

预期的输出应该是这样的:

 hora  n
1     0 12
2     1  3
3     2  5
4     3  7
5     4  8
6     5  1
7     6  0
8     7 11
9     8  6
10    9 10
11   10  9
12   11  0
13   12  0
14   13  3
15   14  0
16   15  7
17   16  8
18   17  1
19   18  2
20   19 11
21   20  6
22   21 10
23   22  9
24   23  4

我尝试创建一个包含小时数0:23和所有n=0的表,并试图对两个表求和,但是显然这没有用。我还尝试了x$hour <- 0:23,以为会添加缺少的值,但效果不佳。

r tibble
1个回答
0
投票

您可以将hora转换为factor并在.drop = FALSE中使用count

library(dplyr)
library(lubridate)

df %>%  mutate(hora = factor(hour(date))) %>%  count(hora, .drop = FALSE)

另一个选择是使用complete

df %>%  
  mutate(hora = hour(date)) %>%  
  count(hora) %>%
  tidyr::complete(hora = 0:23, fill = list(n = 0))
© www.soinside.com 2019 - 2024. All rights reserved.