Создать вектор на основе значения другого вектора - PullRequest
0 голосов
/ 01 июля 2018

У меня есть вектор vec и желаемый результат:

vec <-    c(1,1,1,20,1,1,1,1,40,1,120,1,1)
result <- c(1,1,1,1 ,2,2,2,2, 2,3,3  ,4,4)

Результат создается следующим образом: начинайте с единицы, если значение в vec> 10, начинайте давать два, если следующее значение> 10 начинайте с трех и т. Д.

Я пытался с:

b <- 1
 for (i in 1:length(vec)){
  if(vec[i] < 10){
  vec[i] <- 1
  } else {
   b <- b+1
   vec[i] <- b}}

но это не сработало.

1 Ответ

0 голосов
/ 01 июля 2018

Использование задержки с cumsum

s=dplyr::lag(vec>10)
s[is.na(s)]=FALSE
cumsum(s)+1
 [1] 1 1 1 1 2 2 2 2 2 3 3 4 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...