Как я могу создать последовательность, которая повторяет значение, когда TRUE находится в той же позиции в отдельном векторе R? - PullRequest
0 голосов
/ 05 марта 2020

Например, как я могу взять то, что в x1, и превратить его в x2 эффективным способом? Я работаю с большим набором данных, поэтому циклы не являются предпочтительными.

      x1 x2
1  FALSE  1
2  FALSE  2
3   TRUE  3
4   TRUE  3
5  FALSE  4
6  FALSE  5
7  FALSE  6
8   TRUE  7
9   TRUE  7
10 FALSE  8
11 FALSE  9
12 FALSE 10
13 FALSE 11
14 FALSE 12
15 FALSE 13
16 FALSE 14
17 FALSE 15
18 FALSE 16
19  TRUE 17
20  TRUE 17
21 FALSE 18
22 FALSE 19
23 FALSE 20
24 FALSE 21

1 Ответ

1 голос
/ 05 марта 2020

Один базовый способ R будет увеличивать значение на 1, когда есть FALSE или значение изменяется от предыдущего значения.

with(df, cumsum(!x1 | c(TRUE, diff(x1) != 0)))
#[1]  1  2  3  3  4  5  6  7  7  8  9 10 11 12 13 14 15 16 17 17 18 19 20 21

data

df <- structure(list(x1 = c(FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, 
FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE)), row.names = c(NA, 
-24L), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...