簡體   English   中英

使用 tidyverse 基於現有變量創建新變量

[英]create a new variable based on existing variables by using tidyverse

我想在我的數據集“ data2 ”中創建一個具有 4 個類別(黑人/拉丁裔/白人/其他)的新變量“種族”(見下表)。
我想申請的條件是:

  1. 任何表示“西班牙裔或拉丁裔”的人都被編碼為拉丁裔,無論他們是否表示其他種族選擇。
  2. 那些表示“黑色”(僅)的人將被編碼為黑色
  3. 那些表示“白色”(僅)的人將被編碼為白色
  4. 那些表示“亞洲人”或“美洲原住民”“其他人”或表示多個選項(西班牙裔或拉丁裔除外)的人將被編碼為“其他

我想使用mutatecase_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM