我有一个这样的数据框

w<-c(0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0)

我想要一个从值1开始的索引位置。
output : NA,NA,NA,NA,NA,1,2,3,4,5,6,7,1,2,3,4,5,1,2,3,4,5,6,7,8,9

理想地适用于数据帧。

谢谢

编辑:w是一个数据框,

大致这个功能
m<-as.data.frame(w)
m[m!=1] <- row(m)[m!=1]
m
    w
1   1
2   2
3   3
4   4
5   5
6   1
7   7
8   8
9   9
10 10
11 11
12 12
13  1
14 14
15 15
16 16
17 17
18  1
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26

但当值1匹配时返回1。
> m
    w wanted
1   1      NA
2   2      NA
3   3      NA
4   4      NA
5   5      NA
6   1      1
7   7      2
8   8      3
9   9      4
10 10      5
11 11      6
12 12      7
13  1      1
14 14      2
15 15      3
16 16      4
17 17      5
18  1      1
19 19      2
20 20      3
21 21      4
22 22      5
23 23      6
24 24      7
25 25      8
26 26      9

谢谢

最佳答案

对于给定的数据,包括重复的1和非顺序输入,以下工作:

m[9,1] <- 100
m[3,1] <- 55
m[14,1] <- 60
m[14,1] <- 60
m[25,1] <- 1
m[19,1] <- 1

m$result <- 1:nrow(m) - which(m$w == 1)[cumsum(m$w == 1)] + 1

但是,如果数据不是从1开始:
m[1,1] <- 2

然后工作:
firstone <- which(m$w == 1)[1]
subindex <- m[firstone:nrow(m),'w'] == 1
m$result <- c(rep(NA,firstone-1),1:length(subindex) - which(subindex)[cumsum(subindex)] + 1)

08-16 05:35