每次在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
我有一些数据,其中不同的行数对应一个 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