簡體   English   中英

R 使用 Dplyr 根據其他 5 列的值創建包含 6 個可能值中的 1 個的列

[英]R Use Dplyr to create a column that contain 1 of 6 possible values based on the value of 5 other columns

在 R 中,我試圖創建一個名為 model 的列,其中的值取決於最多 5 個其他列的值。

列是運動、汽車、SUV、旅行車、小型貨車、皮卡。 如果這 5 列是該組的成員,則其值為 1,否則為 0。我想創建一個名為 model 的列,如果 Sport = 1,2 如果 SUV = 1,則等於 1,如果 Wagon = 則等於 3 1, 4 if Minivan = 1 , 5 if Pickup = 1 否則如果所有 5 列都等於 0 那么模型將 = 0。我嘗試使用 case 語句並使用 dplyr 進行變異

cars %>%
mutate(model == case_when(Sport == 1, ~ '1' 
                ,case_when(SUV == 1, ~ '2' 
                ,case_when(Wagon == 1, ~'3' 
                  ,case_when(Minivan == 1, ~'4' 
                  ,case_when(Pickup == 1, ~ '5'
                  ,TRUE ~ 0))))))

但我收到了這個錯誤:

>     error: Problem with `mutate()` input `..1`.
   i `..1 = ==...`.
  x Case 1 (`Pickup == 1`) must be a two-sided formula, not a logical vector.

我已經包含了指向以下文件的鏈接。 [04cars.csv 文件]

您不嵌套case_when語句,您只需將所有表達式傳遞給對case_when一次調用

cars %>%
  mutate(model = case_when(
    Sport == 1 ~ '1',
    SUV == 1 ~ '2',
    Wagon == 1 ~'3',
    Minivan == 1 ~'4',
    Pickup == 1 ~ '5'
    TRUE ~ 0))

將使用每個值的第一個匹配條件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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