Сокращение последовательности в R - PullRequest
4 голосов
/ 10 июня 2010

Предположим, у вас есть такой вектор:

v <- c(1,1,1,2,2,2,2,1,1,3,3,3,3)

Как его лучше всего преобразовать в файл типа data.frame?

v.df <- data.frame(value=c(1,2,1,3),repetitions=c(3,4,2,4))

На процедурном языке я мог бы просто пройтись по циклу и построить data.frame по мере продвижения, но с большим набором данных в R такой подход неэффективен. Любой совет?

Ответы [ 2 ]

12 голосов
/ 10 июня 2010

или более просто

data.frame(rle(v)[])
8 голосов
/ 10 июня 2010
with(rle(v), data.frame(values, lengths))

должен получить то, что вам нужно.

values lengths
     1       3
     2       4
     1       2
     3       4
...