我正在尝试解决这个问题。我有一个带日期列的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
,以为会添加缺少的值,但效果不佳。
您可以将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))