R 数据框中的滚动条件 ifelse

Roll condition ifelse in R data frame

我在 R 中有一个包含两列的数据框,我想创建第三列,该列将在两列中滚动 2 并检查是否满足下面 table 中所述的条件. 条件是一个滚动的 ifelse 并且是这样的:

IF -A1

IF -A2

IF -A3

IF -A4

A B CHECK
1 4 NA
2 5 NA
3 6 FALSE
4 1 TRUE
5 -4 FALSE
6 1 TRUE

我如何在 R 中做到这一点?是否有基本的 R 函数或在 dplyr 框架内?

由于 R 是向量化的,您可以使用一个命令来实现,例如 dplyr::lag:

library(dplyr)
df %>% 
  mutate(CHECK = -lag(A, n=2) < B & lag(A, n=2) > B)

  A  B CHECK
1 1  4    NA
2 2  5    NA
3 3  6 FALSE
4 4  1  TRUE
5 5 -4 FALSE
6 6  1  TRUE