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

R 根据行数为列分配时间序列间隔,r,dplyr,R,Dplyr,需要根据“cnt_行”列按“名称”分组来指定时间间隔。i、 e如果计数在左右 96表示时间间隔为15分钟。因此,如果计数为94,则时间间隔应停止在 晚上11:15(基于行数),如果行数正好是96,则应在每天晚上11:45结束。 间隔5分钟也一样。间隔时间不得超过一天 cnt_rows = c("94","94",".",".","94","286","286"

需要根据“cnt_行”列按“名称”分组来指定时间间隔。i、 e如果计数在
左右 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()))
库(dplyr)
日期%
突变(中断=ifelse(在%c(94,96),‘15分钟’、‘5分钟’)中的cnt_行百分比)%>%
分组单位(名称)%>%
突变(dt=seq(日期,by=first(breaks),length.out=n())

shaw,谢谢您的回复。创建偶数秒的间隔需要创建精确的间隔minute@san1对不起,我不明白。你是什么意思?@Shaw,我试过使用94行计数的实际数据,预期的时间序列是15分钟,而我使用上面的代码intervel column(dt)运行数据,生成时间为偶数秒,如果行数为94,则时间序列应在晚上11:15购买。谢谢。我不清楚你的问题。你能解释一下什么时候数据必须以15分钟的间隔分割,什么时候数据必须以5分钟的间隔分割吗?如果cnt_rows列为94或96,那么15分钟,如果cnt_rows列为286,那么5分钟。谢谢@ronak,数据中只有94、96和286个值吗?没有其他内容?是的,数据中只有94、96和286个值