Я хочу создать последовательность последующих идентичных значений, как data.table::rleid
. Но проблема в том, что я хочу, чтобы некоторые строки были исключены из последовательности, и какие строки должны быть исключены, может быть определен другим столбцом. Я понял, что data.table::rleid
можно использовать дважды, но он все равно не дает идеального результата - см. Ниже:
my_example <- structure(list(event = c(234, 234, 224, 232, 232, 201, 201, 201,
201, 201, 201, 201, 244, 244, 201, 201, 201, 244, 244, 212, 201,
201, 201, 249, 201, 201, 201, 201, 201, 201, 201, 249, 201, 201,
244, 244, 201, 261, 245, 203, 204, 204, 201, 201, 201, 201, 201,
201, 216, 201), subgroup = c(10L, 11L, 10L, 10L, 11L, 10L, 10L,
10L, 10L, 10L, 10L, 11L, 11L, 10L, 10L, 10L, 10L, 10L, 11L, 11L,
10L, 11L, 11L, 11L, 11L, 11L, 11L, 10L, 11L, 11L, 11L, 10L, 10L,
10L, 10L, 11L, 11L, 10L, 11L, 10L, 10L, 11L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 11L)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -50L), .Names = c("event", "subgroup"))
my_example %>%
mutate(in_seq = ! event %in% c(224, 232, 234, 261),
seq = data.table::rleid(subgroup) * in_seq,
seq2 = data.table::rleid(seq))
# A tibble: 50 x 5
event subgroup in_seq seq seq2
<dbl> <int> <lgl> <int> <int>
1 234 10 F 0 1
2 234 11 F 0 1
3 224 10 F 0 1
4 232 10 F 0 1
5 232 11 F 0 1
6 201 10 T 5 2
7 201 10 T 5 2
8 201 10 T 5 2
9 201 10 T 5 2
10 201 10 T 5 2
# ... with 40 more rows
Как я могу исключить некоторые строки из нумерации? (В приведенном выше примере это будет означать, что строки 1: 5, а также строка 38 будут иметь NA в seq2
)