【问题标题】:R Count number of rows by Date and hourR按日期和小时计算行数
【发布时间】:2017-12-08 04:43:57
【问题描述】:

我在 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 RR group by date, and summarize the values),但它们使用 as.Date,因为它们不占小时,而且我无法使它们适应工作。

我该怎么做?谢谢!

【问题讨论】:

    标签: r date time count


    【解决方案1】:

    我们可以通过tidyverse 做到这一点。转换 'Date' 列 datetime 类后,根据 Datehour 获取 count,按 'Date1' 分组,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)
    

    【讨论】:

    • 谢谢阿克伦。它看起来很有希望,但它的表现并不完全正确。它错过了大多数计数为 0 的时间。目前,我得到的输出显示 15 个“N”值,而不是应该有的 29 个(29/07/2012 20:00 和 31/07/2012 01:00 之间的 29 小时)?
    • @Noosentin 是不是基于min(Hour):24
    猜你喜欢
    • 2018-05-11
    • 2019-02-16
    • 2023-03-11
    • 2018-02-27
    • 2021-11-10
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多