【问题标题】:How to use a ifelse or dplyr in R?如何在 R 中使用 ifelse 或 dplyr?
【发布时间】:2020-03-20 19:47:14
【问题描述】:
print(mydata)
Race    Ethnicity
White   Hispanic
White   Non-Hispanic
Black   Unknown
Asian   Non-Hispanic
White   NA
White   Non-Hispanic

我想要一个新专栏。如果有人是西班牙裔,我希望他们在新专栏中成为西班牙裔,无论种族如何。但如果他们的种族是非西班牙裔、未知或北美。我想参加他们的比赛。

这是我想要的输出

print(mydata)
Race    Ethnicity       RaceEthnic
White   Hispanic          Hispanic
White   Non-Hispanic      White
Black   Unknown           Black
Asian   Non-Hispanic      Asian
White   NA                White
White   Non-Hispanic      White

我尝试了类似的方法,但没有成功

data <- data %>%
  mutate(EthnicRace = ifelse(Ethnicity == "Hispanic" ~ "Hispanic", Race))

【问题讨论】:

    标签: r dplyr tidyverse


    【解决方案1】:

    你快到了:

    data <- data %>%
      mutate(EthnicRace = ifelse(Ethnicity == "Hispanic", "Hispanic", Race))
    

    【讨论】:

    • 哈哈,如果有任何事情表明我正在取得进展,因为两周前我什至不知道变异。谢谢
    【解决方案2】:

    ~ 用于case_when 而不是ifelse(假设“种族”和“种族”都是character

    library(dplyr)
    mydata %>%
        mutate(EthnicRace = case_when(Ethnicity == "Hispanic"~ "Hispanic",
                    TRUE ~ Race))
    #  Race    Ethnicity EthnicRace
    #1 White     Hispanic   Hispanic
    #2 White Non-Hispanic      White
    #3 Black      Unknown      Black
    #4 Asian Non-Hispanic      Asian
    #5 White         <NA>      White
    #6 White Non-Hispanic      White
    

    或者另一个选项是replace

    mydata %>% 
       mutate(EthnicRace = replace(Race, Ethnicity == "Hispanic", "Hispanic"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-11
      • 2016-06-28
      • 1970-01-01
      • 2013-06-19
      • 2018-01-02
      • 2016-10-18
      • 1970-01-01
      相关资源
      最近更新 更多