Вы получите несколько потенциальных ответов здесь. Мне нравится пакет data.table
, потому что он быстрый и имеет много полезных встроенных операторов. В этом случае мы можем использовать параметр shift()
для сравнения между наблюдением i
и наблюдением i + 1
. Вы можете разбить это на несколько шагов, но объединение всей вашей логики в один ряд выглядит так:
library(data.table)
set.seed(1)
dt <- data.table(int = sample(10000000:100000000, 10000, replace = TRUE))
dt[, highlight := ifelse(shift(int,n = 1, type = "lead") < int + 5000000, "highlight", "no highlight")]
#show how many rows fit our criteria defined above
table(dt$highlight)
#>
#> highlight no highlight
#> 5524 4475
Создано в 2019-01-24 пакетом представительство (v0.2.1)