R中的序列减少

时间:2010-06-09 23:51:23

标签: r sequence sequences reduction repeat

假设你有一个这样的矢量:

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 个答案:

答案 0 :(得分:12)

或更简单

data.frame(rle(v)[])

答案 1 :(得分:8)

with(rle(v), data.frame(values, lengths))

应该能满足你的需求。

values lengths
     1       3
     2       4
     1       2
     3       4