1
鑑於以下數據集和代碼,我可以找到模式中的第一個數據點,但是如何才能找到模式中的最後一個數據點?在模式中查找最後一個數據點
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)
這將打印,該模式被發現的第一個數據點(S):
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
給定數據。
我試圖尾巴()以不同的方式,但無濟於事
我不得不在此之前,但不-1,]這部分代碼的確切含義是什麼?再次感謝! –
@Salmosalar:'which'得到一系列模式開始的指數。但是,如果添加'length(pat)'(在這種情況下爲4),那麼您沒有得到該模式的結束 - 您將在模式的結尾處過一個(嘗試計算模式開始時的四個項目! ) –
我明白了,非常感謝! –