【问题标题】:How to create a data.frame that counts how many instances by date in R如何创建一个按日期计算 R 中实例数量的 data.frame
【发布时间】:2021-06-22 17:29:44
【问题描述】:

如果有人可以帮助创建一个计算每天记录总数的向量,我们将不胜感激。

作为先决条件,该问题需要从 CSV 文件中提取日期(格式为:11/05/2015 01:30),我已经使用 lubridate 执行了该操作。

library(lubridate)
x<-df$hour_id
x
lubridate::mdy_hm(x)
as.Date(lubridate::mdy_hm(x))

我能够得到如下日期的向量:

 [741] "2015-11-23" "2015-11-23" "2015-11-23" "2015-11-23" "2015-11-23" "2015-11-23" "2015-11-23" "2015-11-23" "2015-11-23" "2015-11-23"
 [751] "2015-11-23" "2015-11-23" "2015-11-23" "2015-11-23" "2015-11-23" "2015-11-23" "2015-11-24" "2015-11-24" "2015-11-24" "2015-11-24"
 [761] "2015-11-24" "2015-11-24" "2015-11-24" "2015-11-24" "2015-11-24" "2015-11-24" "2015-11-24" "2015-11-24" "2015-11-24" "2015-11-24"

我需要一些帮助来创建包含两列的 data.frame:日期和日期总数

非常感谢。

【问题讨论】:

    标签: r dataframe lubridate


    【解决方案1】:

    试试

    table(x)
    

    这将为您提供向量中的唯一值及其计数
    像这样

    2015-11-23 2015-11-24 
             5          5 
    

    那你就可以了

    as.data.frame(table(x))
    
               x Freq
    1 2015-11-23    5
    2 2015-11-24    5
    

    【讨论】:

      【解决方案2】:

      如果您使用dput(df) 提供df 数据框,这将很有用。

      这是一个简单的版本,仅包含您提到的列:

      library(tidyverse)
      df <- tibble(hour_id = c("11/05/2015 01:30", "11/01/2015 01:30", "12/05/2015 01:30", "12/05/2015 01:30"))
      

      这段代码给出了你想要的:

      df %>% 
        mutate(date = lubridate::mdy_hm(hour_id) %>% lubridate::as_date()) %>% 
        count(date)
      
      # A tibble: 3 x 2
        date           n
        <date>     <int>
      1 2015-11-01     1
      2 2015-11-05     1
      3 2015-12-05     2
      

      【讨论】:

        猜你喜欢
        • 2021-04-10
        • 1970-01-01
        • 2014-06-04
        • 1970-01-01
        • 1970-01-01
        • 2018-12-26
        • 1970-01-01
        • 2021-12-27
        相关资源
        最近更新 更多