R 在3的移动窗口中,根据多个条件选择行

R 在3的移动窗口中,根据多个条件选择行,r,loops,dataframe,conditional-statements,R,Loops,Dataframe,Conditional Statements,我的数据框架有四个变量 DF <- read.table(text=" v1 v2 v3 v4 175 14.842 3.06 3300.00 176 0.777 3.21 80 177 4.770 4.15 39.28 178 10.450 6.24 50.36 179 0.507 6.27 0.48 180 0.037 3.31 -47.2

我的数据框架有四个变量

DF <- read.table(text="  v1       v2      v3      v4
 175     14.842   3.06   3300.00
 176     0.777    3.21   80
 177     4.770    4.15   39.28
 178     10.450   6.24   50.36
 179     0.507    6.27   0.48
 180     0.037    3.31  -47.21
 181     15.627   6.28   89.73
 182     57.856   16.90  169.11
 183     26.457   20.10  70
 184     1.482    20.29  0.95
 185     0.842    20.45  0.79", header=TRUE)
DF-30。例如,如果175176177中的v4都大于-30,则存储176;如果(176177178)中的v4都大于-30,则存储177,依此类推

以下代码(罗兰提供)执行此操作

ind-30
ind-30表示所有这些,v3>2.5表示175,存储176。对于(176177178),如果三者的v4>30,176的v3<2.5,则不存储177

再次感谢

试试这个:

library(zoo)

 ok <- function(ix) with(DF[ix, ], all(v4 > -30) & v3[1] > 2.5)
 DF[ rollapply(1:nrow(DF), 3, ok, fill = FALSE), ]

请注意,
v3
在示例数据中始终大于2.5,因此条件在此不起作用。

那么代码在哪里?如果它还不正确也没关系,但你肯定自己已经尝试过了?
library(zoo)

 ok <- function(ix) with(DF[ix, ], all(v4 > -30) & v3[1] > 2.5)
 DF[ rollapply(1:nrow(DF), 3, ok, fill = FALSE), ]
    v1     v2    v3     v4
2  176  0.777  3.21  80.00
3  177  4.770  4.15  39.28
4  178 10.450  6.24  50.36
8  182 57.856 16.90 169.11
9  183 26.457 20.10  70.00
10 184  1.482 20.29   0.95