我在R中有一个跨越几天的大数据集,需要创建一个新的向量,它计算属于每个日期每小时的行数,如果没有表示其间的小时,则为零(因此将有24个每天向量中的值)。例如:
Date
29/07/2012 20:00:01
29/07/2012 20:00:02
29/07/2012 20:00:03
29/07/2012 22:01:01
29/07/2012 22:02:01
29/07/2012 22:02:03
30/07/2012 02:05:05
30/07/2012 02:05:06
30/07/2012 12:09:07
30/07/2012 12:10:06
31/07/2012 01:24:36
31/07/2012 01:24:40
会给出
的向量3,0,3,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2
我发现了类似的内容(Count number of observations per day, month and year in R和R group by date, and summarize the values),但他们使用的是as.Date
,因为他们不会占用一小时而且我还没有能够使他们适应工作。
我该怎么做?谢谢!
答案 0 :(得分:2)
我们可以使用tidyverse
执行此操作。转换“日期”列日期时间类后,根据count
和Date
获取hour
,按“日期1”分组,complete
获取任何缺失的序列
library(tidyverse)
df1 %>%
mutate(Date = dmy_hms(Date)) %>%
count(Date1 = as.Date(Date), Hour = hour(Date)) %>%
group_by(Date1) %>%
complete(Date1, Hour = min(Hour):24, fill = list(n = 0)) %>%
arrange(Date1, Hour)