[英]How to check a column consecutively with a condition in R
我是R的初学者,并且我有一个很大的数据集,其中一部分是:
Hours<- c(1:14)
Measure<- c(5,4,5,5,4,5,5,6,7,6,5,4,5,5)
log6<- data.frame (Hours, Measure)
我想读取3个连续的行,并检查所有3行中的log6 $ Measure <= 5。
然后根据之前的条件添加另一列为True或False的列。
预期产量:
Hours Measure Result
1 1 5 -
2 2 4 -
3 3 5 TRUE
4 4 5 TRUE
5 5 4 TRUE
6 6 5 TRUE
7 7 5 TRUE
8 8 6 FALSE
9 9 7 FALSE
10 10 6 FALSE
11 11 5 FALSE
12 12 4 FALSE
13 13 5 TRUE
14 14 5 TRUE
有什么建议么?
我们可以使用library(zoo)
rollapply
library(zoo)
library(zoo)
log6$Result <- rollapply(log6$Measure, 3, FUN=
function(x) all(x<=5), fill=NA, align="right")
log6$Result
#[1] NA NA TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
@jogo建议的变体
!!(rollapply(data=(log6$Measure < 6), width=3, FUN=prod,
by=1, fill=NA, align="right"))
另一个:
rollapply(log6$Meassure < 6, 3, all, fill=NA, align="right")
或来自@nicola
rollmax(log6$Measure,3, fill=NA, align="right") <=5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.