在R中以等间隔的时间间隔聚合数据

我的数据集是这样的

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中使用过时间数据.所以我对如何实现这一点的任何帮助都将是一个很大的帮助.

解决方法

我认为问题在于你的时间列是字符格式吗?

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

library(dplyr)
x <- data.frame(section = c("s3","s4","s1","s2","s8","s3"),Time = c("9:35","9:35","9:36","10:01","11:00","9:45","10:05","10:05"),x = c(2,2,1,6,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

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...