R 将每个连续序列减少到其值和长度
假设有一个连续值运行的向量:R 将每个连续序列减少到其值和长度,r,sequence,repeat,reduction,R,Sequence,Repeat,Reduction,假设有一个连续值运行的向量: v <- c(1, 1, 1, 2, 2, 2, 2, 1, 1, 3, 3, 3, 3) 在过程语言中,我可能只是迭代一个循环并在运行时构建data.frame,但是对于R中的大型数据集,这种方法效率低下。有什么建议吗 with(rle(v), data.frame(values, lengths)) 你应该得到你需要的 values lengths 1 3 2 4 1 2
v <- c(1, 1, 1, 2, 2, 2, 2, 1, 1, 3, 3, 3, 3)
在过程语言中,我可能只是迭代一个循环并在运行时构建data.frame,但是对于R中的大型数据集,这种方法效率低下。有什么建议吗
with(rle(v), data.frame(values, lengths))
你应该得到你需要的
values lengths
1 3
2 4
1 2
3 4
或者更简单地说
data.frame(rle(v)[])
这正是我所想的功能;我一辈子都记不起这个名字了!非常感谢。这很好,甚至更简洁。另一种方法是
data.frame(unclass(rle(v))
或as.data.frame.list(rle(v))
data.frame(rle(v)[])