【发布时间】:2018-11-16 10:36:46
【问题描述】:
我需要确定在 60 秒内发生的一系列事件(最多 3 个事件)。
这里有IN数据
IN<-read.table(header = FALSE, text = "
2018-06-01_04:29:47
2018-06-01_05:44:41
2018-06-01_05:44:43
2018-06-01_05:44:45
2018-06-01_05:57:54
2018-06-01_05:57:56
2018-06-01_05:57:58
2018-06-01_08:10:35
2018-06-01_08:41:20
2018-06-01_08:41:22
2018-06-01_08:41:24
2018-06-01_08:52:01
2018-06-01_09:02:13
2018-06-01_09:22:45", quote="\n",col.names="time")
IN$time<-as.POSIXct(IN$time, "%Y-%m-%d_%H:%M:%S",tz="")
这里有想要的输出
OUT<-read.table(header = FALSE, text = "
2018-06-01_04:29:47 1
2018-06-01_05:44:41 1
2018-06-01_05:44:43 2
2018-06-01_05:44:45 3
2018-06-01_05:57:54 1
2018-06-01_05:57:56 2
2018-06-01_05:57:58 3
2018-06-01_08:10:35 1
2018-06-01_08:41:20 1
2018-06-01_08:41:22 2
2018-06-01_08:41:24 3
2018-06-01_08:52:01 1
2018-06-01_09:02:13 1
2018-06-01_09:22:45 1
",quote="\n",col.names=c("time","response"))
我已经搜索过类似的问题,但没有成功。 我想函数 diff 是解决这个问题的第一步,
response<-as.numeric(diff(IN$time)>60)
但我不知道如何继续获得所需的输出。
任何帮助将不胜感激。
【问题讨论】:
-
为什么它在第6行从
3变成1? -
嗯,我觉得这个反应是对的。你能具体说明什么问题吗?
-
我就是看不懂序列:
1,1,2,3,1,... -
响应是组内的行号,它会回到
1,因为2018-06-01_05:57:54在2018-06-01_05:44:41之后超过60秒 -
@stefano 澄清一下:计数是否应该达到最大值 3?