r - 为 R 中的缺失值填充零
问题描述
我正在努力解决这个问题。我有一个带有日期列的 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
incount
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))
推荐阅读
- c - 接口 C 函数与 Fortran 中的结构
- sql - 在 Excel VBA 中使用 SQL 记录集填充多列列表框
- sql - 具有动态日期的 SQL Pivot
- python - 如何诊断我的 Keras LSTM 网络的问题?
- perl - Perl 抱怨全局符号需要明确的包名,尽管严格和警告已关闭
- android - 发布 apk 出现“未安装应用程序”错误,但调试 apk 工作正常
- r - rowSums error 'x' must be numeric
- php - PHP显示内容基于referrer
- json - 如何使用 bash 脚本屏蔽存储在 json 文件中的密码
- c++ - 在 2d C 数组上使用 std::transform 到 1d C 数组