给定以下数据集和代码,我可以找到模式中的第一个数据点,但是如何找到模式中的最后一个数据点?
d<-read.table(text='Date.Time Aerial
794 "2012-10-01 08:18:00" 1
795 "2012-10-01 08:34:00" 1
796 "2012-10-01 08:39:00" 1
797 "2012-10-01 08:42:00" 1
798 "2012-10-01 08:48:00" 1
799 "2012-10-01 08:54:00" 1
800 "2012-10-01 08:58:00" 1
801 "2012-10-01 09:04:00" 1
802 "2012-10-01 09:05:00" 1
803 "2012-10-01 09:11:00" 1
1576 "2012-10-01 09:17:00" 2
1577 "2012-10-01 09:18:00" 2
804 "2012-10-01 09:19:00" 1
805 "2012-10-01 09:20:00" 1
1580 "2012-10-01 09:21:00" 2
1581 "2012-10-01 09:23:00" 2
806 "2012-10-01 09:25:00" 1
807 "2012-10-01 09:32:00" 1
808 "2012-10-01 09:37:00" 1
809 "2012-10-01 09:43:00" 1', header=TRUE, stringsAsFactors=FALSE, row.names=1)
我能够找到一个模式并识别该模式中的第一个数据点:
require(zoo)
##Pattern
pat <- c(1,1,2,2)
##Find pattern
count<- function(fish,pat){x <- rollapply(fish$Aerial, length(pat), FUN=function(x) all(x == pat))
fish[which(x),]
}
##call function
count(d,pat)
这将打印找到模式的第一个数据点:
count(d,pat)
Date.Time Aerial
802 2012-10-01 09:05:00 1
804 2012-10-01 09:19:00 1
如何打印模式中的最后一个数据点?
调整后的函数将打印:
Date.Time Aerial
802 2012-10-01 09:18:00 2
804 2012-10-01 09:23:00 2
对于给定的数据。
我以各种方式尝试了tail()但无济于事