为R中缺少的值填充零
我正在努力解决这个问题。 我有一个带有日期列的df,我想计算每小时的发生次数。以下是我所做的:为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
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
>