R - 如何基于另一个变量创建变量

时间:2014-08-04 16:14:52

标签: r

我有:

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,依此类推。

1 个答案:

答案 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:n
s <- 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