【问题标题】:Aggregate time to 10 minute累计时间为 10 分钟
【发布时间】:2020-11-01 12:34:20
【问题描述】:

我有一个数据集,其中包含一周中某个时间(例如超过 1 天)发生的日常事件的时间,以及每个事件的相应用电量数据:

我想将时间汇总为 10 分钟。

我一直在关注这个solution,但在这种情况下,有超过 1 天的时间使垃圾箱的创建有所不同。

如何将我的数据汇总到 10 分钟?

样本数据:

 df<-structure(list(Time = c(NA, "06/01/2015 23:31", "06/01/2015 23:32", 
"06/01/2015 23:33", "06/01/2015 23:34", "06/01/2015 23:35", "06/01/2015 23:36", 
"06/01/2015 23:37", "06/01/2015 23:38", "06/01/2015 23:39", "06/01/2015 23:40", 
"06/01/2015 23:41", "06/01/2015 23:42", "06/01/2015 23:43", "06/01/2015 23:44", 
"06/01/2015 23:45", "06/01/2015 23:46", "06/01/2015 23:47", "06/01/2015 23:48", 
"06/01/2015 23:49", "06/01/2015 23:50", "06/01/2015 23:51", "06/01/2015 23:52", 
"06/01/2015 23:53", "06/01/2015 23:54", "06/01/2015 23:55", "06/01/2015 23:56", 
"06/01/2015 23:57", "06/01/2015 23:58", "06/01/2015 23:59", "07/01/2015 00:00", 
"07/01/2015 00:01", "07/01/2015 00:02", "07/01/2015 00:03", "07/01/2015 00:04", 
"07/01/2015 00:05"), kW_Raw_Data = c(2.415, 1.341667, 2.146667, 
2.683333, 2.683333, 2.683333, 2.415, 2.951667, 2.951667, 2.951667, 
2.951667, 1.61, 1.341667, 3.488333, 3.756667, 3.22, 2.951667, 
2.951667, 2.951667, 2.415, 2.415, 1.61, 1.341667, 2.683333, 2.683333, 
2.683333, 2.415, 2.415, 2.415, 2.415, 2.415, 2.415, 2.415, 2.415, 
2.415, 2.415)), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"
), row.names = c(NA, -36L), spec = structure(list(cols = list(
    Time = structure(list(), class = c("collector_character", 
    "collector")), kW_Raw_Data = structure(list(), class = c("collector_double", 
    "collector"))), default = structure(list(), class = c("collector_guess", 
"collector")), skip = 1), class = "col_spec"))

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    将时间更改为 POSIXct 格式后,您可以根据数据调整其中一种解决方案。

    library(dplyr)
    library(lubridate)
    
    df %>%
      mutate(Time = dmy_hm(Time), 
             Time  = ceiling_date(Time, '10 min')) %>%
      group_by(Time) %>%
      summarise(kW_Raw_Data = sum(kW_Raw_Data, na.rm = TRUE)) %>%
      na.omit()
    
    #  Time                kW_Raw_Data
    #  <dttm>                    <dbl>
    #1 2015-01-06 23:40:00        25.8
    #2 2015-01-06 23:50:00        27.1
    #3 2015-01-07 00:00:00        23.1
    #4 2015-01-07 00:10:00        12.1
    

    【讨论】:

      【解决方案2】:

      这行得通吗:

      > library(dplyr)
      > library(lubridate)
      > df$Time <- dmy_hm(df$Time)
      > df %>% mutate(interval = cut.POSIXt(df$Time, breaks = '10 mins')) %>% group_by(interval) %>% summarise(sum(kW_Raw_Data))
      `summarise()` ungrouping output (override with `.groups` argument)
      # A tibble: 5 x 2
        interval            `sum(kW_Raw_Data)`
        <fct>                            <dbl>
      1 2015-01-06 23:31:00              25.8 
      2 2015-01-06 23:41:00              27.1 
      3 2015-01-06 23:51:00              23.1 
      4 2015-01-07 00:01:00              12.1 
      5 NA                                2.42
      > 
      

      【讨论】:

        猜你喜欢
        • 2022-01-22
        • 2016-04-15
        • 1970-01-01
        • 2013-06-28
        • 2015-02-01
        • 2021-01-08
        • 1970-01-01
        • 2015-11-08
        • 1970-01-01
        相关资源
        最近更新 更多