![](/img/trans.png)
[英]How to create a time interval that count the rows in such time interval in R
[英]allocate time series interval to the column based on count of rows
需要根据按“名称”分组的“cnt_rows”列分配时间间隔。 即如果计数在附近
96 意味着那么它将是 15 分钟的时间间隔。 所以如果计数是 94 那么时间间隔应该停止在
晚上 11:15(基于行数),如果它们正好是 96,那么它应该在每天晚上 11:45 结束。
5 分钟间隔相同。 间隔不应超过一天
cnt_rows = c("94","94",".",".","94","286","286",".",".",".","286","96","96",".",".","96")
Name = c("Alan","Alan",".",".","Alan","Steve","Steve",".",".",".","Steve","Mike","Mike",".",".","Mike")
Values = c("10","10",".",".","45","91","35",".",".",".","46","34","5",".",".","34")
输入表
df = data.frame(cnt_rows,Name,Values)
输出表
dt = c("2019-12-01 00:00:00","2019-12-01 00:15:00",".",".","2019-12-01 23:15:00","2019-12-01 00:00:00","2019-12-01 00:05:00",".",".",".","2019-12-01 23:45:00","2019-12-01 00:00:00","2019-12-01 00:15:00",".",".","2019-12-01 23:45:00")
df_out = data.frame(cnt_rows,Name,Values,dt)
提前致谢。
也许你可以尝试:
library(dplyr)
date <- as.POSIXct('2019-12-01')
df %>%
mutate(breaks = ifelse(cnt_rows %in% c(94, 96), '15 min', '5 min')) %>%
group_by(Name) %>%
mutate(dt = seq(date, by = first(breaks), length.out = n()))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.