我有一个数据帧中指定基于数据块的二进制向量:另一矢量
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多个,连续行实例的嵌段I要分配二元载体当diffsecs的值等于180时等于1,否则等于0。然而,我只希望它在180 5个或更多连续实例的块时等于1因此,如果有180个连续3个值的二元载体将等于0。
我尝试使用循环
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,1,0,0,0,你将它改为0,0,1,1,1,1,1,1,0,0。 –