在r中条件为FALSE时分配唯一ID

在r中条件为FALSE时分配唯一ID,r,variable-assignment,data-manipulation,R,Variable Assignment,Data Manipulation,我需要分配唯一的ID,但是,除了当大小减小时,没有识别变量。我已经创建了一个真/假语句向量,我想在语句为假时为每一行分配一个ID。每次传递TRUE语句时,我都希望为行分配一个新ID,并在语句为FALSE时继续使用该ID 我的数据集示例: Size index 1 8.70 FALSE 2 9.40 FALSE 3 10.00 FALSE 4 10.50 FALSE 5 11.00 FALSE 6 1.60 TRUE

我需要分配唯一的ID,但是,除了当大小减小时,没有识别变量。我已经创建了一个真/假语句向量,我想在语句为假时为每一行分配一个ID。每次传递TRUE语句时,我都希望为行分配一个新ID,并在语句为FALSE时继续使用该ID

我的数据集示例:

     Size    index
1    8.70    FALSE
2    9.40    FALSE
3   10.00    FALSE
4   10.50    FALSE
5   11.00    FALSE
6    1.60    TRUE
7    2.20    FALSE
8    2.60    FALSE
9    3.30    FALSE
10   3.70    FALSE
11   1.10    TRUE
12   2.40    FALSE
13   2.80    FALSE
14   3.40    FALSE
15   4.90    FALSE
16   6.20    FALSE
17   1.90    TRUE
18   2.20    FALSE
19   3.30    FALSE
20   4.80    FALSE
我已尝试使用以下代码

x$index[1] <- FALSE
RandomID <- sample(100:999, size = 1000, replace = TRUE)
for(i in 1:len){
  int <- sample(RandomID,1,replace = FALSE)
  if(x$index[i] == FALSE) {
    print(int)
  }else{break}
}

x$index[1]您可以从基本R使用
cumsum

x$id <- cumsum(x$index) + 1 
x
#   Size index id
#1   8.7 FALSE  1
#2   9.4 FALSE  1
#3  10.0 FALSE  1
#4  10.5 FALSE  1
#5  11.0 FALSE  1
#6   1.6  TRUE  2
#7   2.2 FALSE  2
#8   2.6 FALSE  2
#9   3.3 FALSE  2
#10  3.7 FALSE  2
#11  1.1  TRUE  3
#12  2.4 FALSE  3

x$id您可以从基本R使用
cumsum

x$id <- cumsum(x$index) + 1 
x
#   Size index id
#1   8.7 FALSE  1
#2   9.4 FALSE  1
#3  10.0 FALSE  1
#4  10.5 FALSE  1
#5  11.0 FALSE  1
#6   1.6  TRUE  2
#7   2.2 FALSE  2
#8   2.6 FALSE  2
#9   3.3 FALSE  2
#10  3.7 FALSE  2
#11  1.1  TRUE  3
#12  2.4 FALSE  3
x$id