给出数据索引

时间:2019-06-12 11:06:09

标签: r indexing dplyr grouping

希望您能帮助我解决我的问题。

我想在数据中的每个组上创建一个索引。

数据看起来像这样。

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

2 个答案:

答案 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)