在R中以等间隔的时间间隔聚合数据
发布时间:2020-12-14 04:58:47 所属栏目:百科 来源:网络整理
导读:我的数据集是这样的 Section Time xs3 9:35 2s4 9:35 2s1 9:36 1s2 10:01 1s8 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-
我的数据集是这样的
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |