次のデータ セットとコードを指定すると、パターンの最初のデータ ポイントを見つけることができますが、パターンの最後のデータ ポイントを見つけるにはどうすればよいでしょうか?
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() を試しましたが、役に立ちませんでした