удалить значения, если за ними следует определенное значение в R - PullRequest
0 голосов
/ 17 декабря 2018

Я довольно новичок в R, и мне нужна ваша помощь.У меня есть набор данных, который выглядит следующим образом:

id   type   timespan 
1    yes    2016-07-30 06:22:24
1    no     2016-07-30 09:12:16
1    yes    2016-07-30 10:42:20
2    no     2016-07-30 18:46:15
1    yes    2016-07-30 19:56:54
2    yes    2016-07-30 20:44:00

Теперь я хотел бы сохранить только те значения «да», за которыми не следует значение «нет» на основе идентификатора.Вот как я ожидаю, что мой результат будет:

id   type   timespan 
1    yes    2016-07-30 10:42:20
1    yes    2016-07-30 19:56:54
2    yes    2016-07-30 20:44:00

Есть ли способ, как сделать это в R?

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 17 декабря 2018

Что-то вроде:

library(dplyr)

 df %>%
  group_by(id) %>% 
  filter(type == 'yes' & coalesce(lead(type) != 'no', T))

В data.table вы можете сделать:

library(data.table)

setDT(df)[, .SD[(type != "no" & (shift(type, type = "lead") != "no" | is.na(shift(type, type = "lead"))))], by = id]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...