r - 在 R 中按等距时间间隔聚合数据

标签 r time-series aggregate

我的数据集是这样的

Section Time  x
s3      9:35  2
s4      9:35  2
s1      9:36  1
s2     10:01  1
s8     11:00  2

所以,我想以每小时的间隔对数据部分进行分组,并对位于该间隔内的 x 值求和

我的预期输出是
 sec     Time          x
 s1      9:00-10:00    1
 s2      9:00-10:00    0
 s3      9:00-10:00    2
 s4      9:00-10:00    2
 s8      9:00-10:00    0
 s1      10.00-11.00   0
 s2      10.00-11.00   1
 s3      10.00-11.00   0
 s4      10.00-11.00   0
 s8      10.00-11.00   1   

我试图从这篇文章中获得一些帮助 in stack overflow ,但我的此查询出现以下错误。这里 x 是我的框架
data.frame(value = tapply(cbind(x$x),
                     list(sec= x$section,cut(x$Time, breaks="1 hour")),
                       sum))

Error in cut.default(x$Time, breaks = "1 hour") : 'x' must be numeric

我什至不确定这是对还是错。我从来没有在 R 中处理时间数据。所以任何关于如何实现这一点的帮助都会有很大的帮助。

最佳答案

我认为问题在于您的 Time列是字符格式吗?

无论如何,这是使用 dplyr 的一种快速而肮脏的方法:

library(dplyr)
x <- data.frame(section = c("s3", "s4", "s1", "s2", "s8", "s1", "s2", "s3"), 
            Time = c("9:35", "9:35", "9:36", "10:01", "11:00", "9:45", "10:05", "10:05"), 
            x = c(2, 2, 1, 1, 2, 6, 2, 4), stringsAsFactors = FALSE)
x %>% 
  rowwise %>% 
  mutate(aux = as.numeric(strsplit(Time, ":")[[1]][1]),
         time = paste0(aux, ":00-", aux+1, ":00")) %>% 
  select(-aux, -Time) %>% 
  ungroup %>% 
  group_by(time, section) %>% 
  summarise(x = sum(x)) %>% 
  ungroup

关于r - 在 R 中按等距时间间隔聚合数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30932626/

相关文章:

python - Pandas 以 "seasonal"频率重新采样

python - 我如何 Pandas 分组获得总和?

C# Lambda OrderByDescending 和 Sum

r - 使用 rcpp 将 R 函数传递给 C 例程

r - Keras 如何预测 11106 个不同客户的(单独)销售序列,每个客户都有一系列不同的长度(从 1 到 15 个周期)

python - LSTM 的输入形状,具有一个热编码数据

Python pandas 对多列执行相同的聚合

r - DT 中的条件格式样式

在 R 中读取 Stata 13 文件

使用 2 个向量参数翻转函数