我想在我的数据集“data2”(见下表)中创建一个包含 4 个类别(黑人/拉丁裔/白人/其他)的新变量“种族”。
我要申请的条件是:
我想使用 mutate
和 case_when
函数按照上述条件创建一个新变量 race。
race_1 - 亚洲
Race_2 - 黑色
Race_3 - 西班牙裔或拉丁裔
Race_4 - 美洲原住民
Race_5 - 白
Race_6 - 其他
race_1 | race_2 | race_3 | race_4 | race_5 | race_6 |
---|---|---|---|---|---|
不适用 | 1 | 不适用 | 不适用 | 不适用 | 不适用 |
不适用 | 不适用 | 1 | 不适用 | 不适用 | 不适用 |
不适用 | 不适用 | 1 | 不适用 | 不适用 | 不适用 |
1 | 不适用 | 1 | 不适用 | 1 | 不适用 |
不适用 | 不适用 | 不适用 | 不适用 | 1 | 不适用 |
不适用 | 不适用 | 1 | 不适用 | 不适用 | 不适用 |
答案 0 :(得分:0)
dat %>%
# convert `NA` to false, all others to true ... verify this is what you want
mutate_at(vars(starts_with("race_")), ~ !is.na(.)) %>%
# provide a variable that lists how many races were selected
mutate(combined = rowSums(across(starts_with("race_")))) %>%
mutate(race = case_when(
race_3 ~ "Latino",
race_2 & combined == 1 ~ "Black",
race_5 & combined == 1 ~ "White",
TRUE ~ "Others")
)
# race_1 race_2 race_3 race_4 race_5 race_6 combined results
# 1 FALSE TRUE FALSE FALSE FALSE FALSE 1 Black
# 2 FALSE FALSE TRUE FALSE FALSE FALSE 1 Latino
# 3 FALSE FALSE TRUE FALSE FALSE FALSE 1 Latino
# 4 TRUE FALSE TRUE FALSE TRUE FALSE 3 Latino
# 5 FALSE FALSE FALSE FALSE TRUE FALSE 1 White
# 6 FALSE FALSE TRUE FALSE FALSE FALSE 1 Latino