希望您能帮助我解决我的问题。
我想在数据中的每个组上创建一个索引。
数据看起来像这样。
ID X
1 1
1 2
1 1
1 2
1 1
1 2
1 3
2 1
2 2
2 3
2 4
2 1
2 2
2 3
2 1
2 2
我尝试重新编码和数据,但是它给了我这个结果
group_by(X) %>% mutate(INDEX = seq_along())
它给了我这个结果。
ID X INDEX
1 1 1
1 2 1
1 1 2
1 2 2
1 1 3
1 2 3
1 3 1
2 1 4
2 2 4
2 3 2
2 4 1
2 1 5
2 2 5
2 3 3
2 1 6
2 2 6
但是,我希望得到这个结果。
ID X INDEX
1 1 1
1 2 1
1 1 2
1 2 2
1 1 3
1 2 3
1 3 3
2 1 4
2 2 4
2 3 4
2 4 4
2 1 5
2 2 5
2 3 5
2 1 6
2 2 6
答案 0 :(得分:0)
尝试一下:
grouping = 0
sapply(seq(1,nrow(X)),function(x){
if(X[x,2] == 1){
grouping <<- grouping + 1
}
return(grouping)
})
答案 1 :(得分:0)
您应该首先计算“重新启动”的次数:
nstarts <- length(df$X[df$X == 1])
然后,您可以在每次计数器重新启动时分配一个ID:
df$ID[df$X == 1] <- 1:nstarts
并用相同的值填充该列的其余部分:
library(tidyr)
df <- fill(df, ID)