如何计算向量中一组字符的重复?想象一下以下向量由"A"
和组成"B"
:
x <- c("A", "A", "A", "B", "B", "A", "A", "B", "A")
在这个例子中,第一组将是序列"A"
和"B"
从索引1至5,第二组是的序列"A"
和"B"
从索引6至8,然后将第三组是最后单"A"
:
x <- c("A", "A", "A", "B", "B", # set 1 "A", "A", "B", # set 2 "A") # set 3
如何为每组变量设置一个计数器?我需要一个这样的矢量:
c(1, 1, 1, 1, 1, 2, 2, 2, 3)
谢谢
用途rle
:
x <- c("A", "A", "A", "B", "B", "A", "A", "B", "A") tmp <- rle(x) #Run Length Encoding # lengths: int [1:5] 3 2 2 1 1 # values : chr [1:5] "A" "B" "A" "B" "A"
现在更改值:
tmp$values <- ave(rep(1L, length(tmp$values)), tmp$values, FUN = cumsum)
并反转运行长度编码:
y <- inverse.rle(tmp) #[1] 1 1 1 1 1 2 2 2 3