创建一个新的变量,用于计算R中重复的长度

BIN*_*BIN 2 aggregate r count duplicates

我有一个数据框,我想创建一个变量z,计算"y变量"的副本,如果y有1,1 set z = 2,2,如果y有3,3,3,则设置z = 3,3 ,3.

 x = c("a","b","c","d","e","a","b","c","d","e","a","b","c")
 y = c(1,1,2,2,2,3,3,4,4,4,5,5,5)
 data <- data.frame(x,y)
 data
    x y z
 1  a 1 2
 2  b 1 2
 3  c 2 3
 4  d 2 3
 5  e 2 3
 6  a 3 2
 7  b 3 2
 8  c 4 3
 9  d 4 3
 10 e 4 3
 11 a 5 3
 12 b 5 3
 13 c 5 3
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Psi*_*dom 5

你可以尝试rle:

data$z <- with(data, unlist(mapply(rep, rle(y)$lengths, rle(y)$lengths)))
data
   x y z
1  a 1 2
2  b 1 2
3  c 2 3
4  d 2 3
5  e 2 3
6  a 3 2
7  b 3 2
8  c 4 3
9  d 4 3
10 e 4 3
11 a 5 3
12 b 5 3
13 c 5 3
Run Code Online (Sandbox Code Playgroud)