4

假设您有一个包含连续值运行的向量:

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

如何最好地将其减少到每次运行一个值以及每次运行的长度。即第一次运行1重复两次;第二轮:2重复四次;第三次运行:1重复两次,依此类推:

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

在程序语言中,我可能只是遍历一个循环并构建 data.frame,但是对于 R 中的大型数据集,这种方法效率低下。有什么建议吗?

4

2 回答 2

12

或更简单地说

data.frame(rle(v)[])
于 2010-06-10T00:43:42.187 回答
8
with(rle(v), data.frame(values, lengths))

应该得到你所需要的。

values lengths
     1       3
     2       4
     1       2
     3       4
于 2010-06-10T00:06:08.057 回答