[英]create a new variable based on existing variables by using tidyverse
我想在我的數據集“ data2 ”中創建一個具有 4 個類別(黑人/拉丁裔/白人/其他)的新變量“種族”(見下表)。
我想申請的條件是:
我想使用mutate
和case_when
function 按照上述條件創建一個新的變量race 。
race_1 - 亞洲人
race_2 - 黑色
race_3 - 西班牙裔或拉丁裔
race_4 - 美洲原住民
race_5 - 白色
race_6 - 其他
種族_1 | 種族_2 | 比賽_3 | 比賽_4 | 種族_5 | 種族_6 |
---|---|---|---|---|---|
不適用 | 1 | 不適用 | 不適用 | 不適用 | 不適用 |
不適用 | 不適用 | 1 | 不適用 | 不適用 | 不適用 |
不適用 | 不適用 | 1 | 不適用 | 不適用 | 不適用 |
1 | 不適用 | 1 | 不適用 | 1 | 不適用 |
不適用 | 不適用 | 不適用 | 不適用 | 1 | 不適用 |
不適用 | 不適用 | 1 | 不適用 | 不適用 | 不適用 |
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.