поднабор данных, основанный на условии текущего и предыдущего объекта в r - PullRequest
0 голосов
/ 16 октября 2018

У меня есть данные с колонкой status.Я хочу установить свои данные в состояние 'f' и предыдущее состояние 'f'.для упрощения:

df
id  status  time
1    n       1
1    n       2
1    f       3
1    n       4
2    f       1
2    n       2
3    n       1
3    n       2
3    f       3
3    f       4

мой результат должен быть:

id  status  time
1    n       2
1    f       3
2    f       1
3    n       2
3    f       3
3    f       4

Как я могу сделать это в R?

1 Ответ

0 голосов
/ 16 октября 2018

Вот решение, использующее dplyr -

df %>%
  group_by(id) %>%
  filter(status == "f" | lead(status) == "f") %>%
  ungroup()

# A tibble: 6 x 3
     id status  time
  <int> <fct>  <int>
1     1 n          2
2     1 f          3
3     2 f          1
4     3 n          2
5     3 f          3
6     3 f          4

Данные -

df <- structure(list(id = c(1L, 1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L, 3L), 
    status = structure(c(2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 
    1L), .Label = c("f", "n"), class = "factor"), time = c(1L, 
    2L, 3L, 4L, 1L, 2L, 1L, 2L, 3L, 4L)), .Names = c("id", "status", 
"time"), class = "data.frame", row.names = c(NA, -10L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...