Как последовательно пронумеровать вектор в R на основе изменения уникальных значений? - PullRequest
2 голосов
/ 11 июля 2019

Предположим, у меня есть следующий вектор:

dat <- c(1,1,1, 2,2,2, 3,3, 4,4,4,4)   <- (I added spaces to better see grouping)

Я хотел бы назначить последовательные номера, начиная с 1, перезапуская для каждого уникального значения в dat. Желаемый результат будет:

1 2 3   1 2 3   1 2   1 2 3 4    <- (I added spaces to better see grouping)

Моя попытка:

unlist(
  lapply(unique(dat), function(x) 
     seq(1,length(which(dat==x)==T),1)
  )
)

[1] 1 2 3 1 2 3 1 2 1 2 3 4

Есть ли более простой способ сделать это?

1 Ответ

2 голосов
/ 11 июля 2019

Да:

sequence(rle(dat)$lengths)
...