繁体   English   中英

如何在R中使用条件连续检查列

[英]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)
  1. 我想读取3个连续的行,并检查所有3行中的log6 $ Measure <= 5。

  2. 然后根据之前的条件添加另一列为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM