我的数据集是这样的
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/