内のデータブロックに基づいてバイナリーベクターを割り当て:Iは、データフレームを有する他のベクター
dat <- data.frame(diffsecs=(c(189, 245, 13988, 2396, 29601, 263, 297, 292, 230, 257, 192,
286, 236, 261, 286, 268, 294, 260, 286, 299, 514, 2287, 234,
195, 250, 519, 560, 3314, 12340, 186, 184, 180, 180, 180, 180,
180, 180, 180, 180, 180, 3072, 180, 180, 206, 180, 180, 180,
360, 180, 180, 180, 180, 5220, 180, 437, 246, 218, 212, 472,
2356, 2641, 363, 425, 757, 403, 181, 355, 192, 192, 784, 238,
250, 261, 272, 2554, 29524, 4482, 6762, 1252, 269, 303, 294,
286, 273, 289, 274, 216, 255, 180, 252, 322, 238, 583, 289, 317,
308, 305, 308, 312, 330)))
、複数の、連続する行は、私はバイナリーベクターを割り当てる180が等しいされたインスタンスのブロックを有しますdiffsecsの値が180の場合は1になり、そうでない場合は0になります。しかし、私は180の3つの連続した値が存在するのであれば180の5つの以上の連続したインスタンスのブロックにバイナリーベクターは、私はループを
を使用してみました0に等しくなるとき、それは1に等しくします
total<- nrow(dat)
len<- 1:total
for(i in len){
temp<- dat[i:(i+5),]
xdiff<- ifelse(mean(temp$diffsecs)>178 & mean(temp$diffsecs)<182 ,1,0)
temp2<- cbind(dat[i,],xdiff)
if(i==1) {dat2 <- temp2}
else {dat2<- rbind(dat2,temp2)}
}
しかし、それはそれを管理せず、必要以上に短いブロックを割り当てます。
@Frank:うんそうです... – digEmAll
これは素晴らしいです、ありがとうございました。私が必要とするものを正確に行います。 –
1のバッチの直後に最初のバイナリ値を1としても割り当てることができます。つまり、inverse.rle関数を使用して順次インスタンスを記録した後です。したがって、シーケンスが0,0,1,1,1,1,0,0,0の場合、0,0,1,1,1,1,1,0,0に変更されました。 –