每次在R中将组ID分配给不同数量的行

Assigning group ID to different number of rows each time in R

我有一些数据,其中不同的行数对应一个 ID(例如人)。这是它的样子:

label      | response
-----------+------------
'consent'  |  'yes'
'age'      |  '34'
'gender'   |  'female'
'language' |  'english'
'education'|  'college'
'consent'  |  'yes'
'age '     |  '37'
'gender '  |  'male'
'language' |  'english'
'education'|  'high school'
'race'     |  'white'

这些回复对应于两个人,一个包含关于种族的回复,而另一个则没有。由于每个人都有 consent 的答案,我想知道是否有一种方法可以根据同意标签分配人员 ID。例如。如果标签=同意,则为每一行分配相同的 ID,直到下一次同意。例如,我希望数据看起来像这样:

label      | response   |  ID
-----------+------------+------
'consent'  |  'yes'     |  1 
'age'      |  '34'      |  1
'gender'   |  'female'  |  1
'language' |  'english' |  1
'education'|  'college' |  1
'consent'  |  'yes'     |  2
'age '     |  '37'      |  2
'gender '  |  'male'    |  2
'language' |  'english' |  2
'education'|  'HS'      |  2
'race'     |  'white'   |  2

我已经尝试了很多 for 循环和 if 语句,但还没有找到一种方法来实现它。希望可以实现。

谢谢!

这个有用吗:

library(dplyr)
df %>% mutate(ID = cumsum(label == 'consent'))
# A tibble: 11 x 3
   label     response       ID
   <chr>     <chr>       <int>
 1 consent   yes             1
 2 age       34              1
 3 gender    female          1
 4 language  english         1
 5 education college         1
 6 consent   yes             2
 7 age       37              2
 8 gender    male            2
 9 language  english         2
10 education high school     2
11 race      white           2