我有:
v1 <- c(1,1,1,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4)
我希望创建v2
,为v1
分配3个元素的数量:
v2 <- c(1,1,1,1,1,1,1,1,1,2,2,2,3,3,3,1,1,1,2,2,2)
说明:
对于前三次重复的数字,对应于该数字的值为1,对于第二次三次,则为2,依此类推。
答案 0 :(得分:5)
v1 <- c(1,1,1,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4)
使用rle
查找游程长度:
l <- rle(v1)$lengths
#[1] 3 3 9 6
为每个运行长度n:
创建一个序列1:ns <- sequence(l)
#[1] 1 2 3 1 2 3 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6
使用整数除法:
(s - 1) %/% 3 + 1
#[1] 1 1 1 1 1 1 1 1 1 2 2 2 3 3 3 1 1 1 2 2 2