繁体   English   中英

根据行数为列分配时间序列间隔

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM