Подмножество по значению следующей строки - PullRequest
0 голосов
/ 02 мая 2018

Я ищу подмножество строк по значению следующей строки для одного столбца.

df <- data.frame(t = c(1,2,3,4,5,6,7,8), b = c(1,2,1,0,1,0,1,2))

Итак, я хочу установить подмножество df и получить строки, где b == 2, следующие за любой строкой, где b == 1. Таким образом, подмножество должно возвращать 2 строки (где t = 1 и t = 7)

Я пытался использовать which и lag из dplyr, как упоминалось в других ответах, но я не мог заставить это работать.

1 Ответ

0 голосов
/ 02 мая 2018

Мы можем получить следующее значение с помощью lead, создать условие, чтобы проверить, равно ли оно 2, а текущее значение равно 1, и использовать это выражение в filter

library(dplyr)
df %>% 
  filter(b == 1, lead(b)==2)
#  t b
#1 1 1
#2 7 1

Или используйте subset из base R

subset(df, c(b[-1] == 2, FALSE) & b == 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...