Cos*_*Cos 6 r vector count sequence run-length-encoding
如果我有一个矢量
"a": 0 0 1 1 1 0 0 0 0 1 1 0 0 0
Run Code Online (Sandbox Code Playgroud)
如何生成包含连续元素数的相同长度的向量,如下所示:
"b": 2 2 3 3 3 4 4 4 4 2 2 3 3 3
Run Code Online (Sandbox Code Playgroud)
我试过了,但我没有设法以这种方式伸展它.
使用rle和的另一种选择rep
with(rle(a), rep(lengths, times = lengths))
# [1] 2 2 3 3 3 4 4 4 4 2 2 3 3 3
Run Code Online (Sandbox Code Playgroud)
数据
a <- c(0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0)
Run Code Online (Sandbox Code Playgroud)
使用创建分组变量diff并使用它ave来计算length每个组.
ave(x, cumsum(c(0, diff(x) != 0)), FUN = length)
# [1] 2 2 3 3 3 4 4 4 4 2 2 3 3 3
Run Code Online (Sandbox Code Playgroud)
你也可以这样做 dplyr lag
library(dplyr)
ave(x,cumsum(x != lag(x, default = FALSE)), FUN = length)
#[1] 2 2 3 3 3 4 4 4 4 2 2 3 3 3
Run Code Online (Sandbox Code Playgroud)
并且为了完整性 data.table rleid
library(data.table)
ave(x, rleid(x), FUN = length)
#[1] 2 2 3 3 3 4 4 4 4 2 2 3 3 3
Run Code Online (Sandbox Code Playgroud)
数据
x <- c(0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0)
Run Code Online (Sandbox Code Playgroud)