R 提供数据索引

R 提供数据索引,r,indexing,dplyr,grouping,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

希望你能帮我解决我的问题

我想为我的数据中的每个组创建一个索引

数据如下所示

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
然而,我期望得到这个结果

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
试试这个:

grouping = 0
sapply(seq(1,nrow(X)),function(x){
  if(X[x,2] == 1){
    grouping <<- grouping + 1  
  }
  return(grouping)
})
分组=0
SAPPY(序号(1,nrow(X)),函数(X){
如果(X[X,2]==1){

分组您应该首先计算“重新启动”的次数:

nstarts <- length(df$X[df$X == 1])

n开始澄清:您的索引是ID和X组合到目前为止出现的次数?请尝试
…index=cumsum(X==1)
您很接近。
groupby(X)%>%mutate(index=seq(n())
应该会得到结果。它给了我相同的结果,但没有起作用。