【问题标题】:Swap chars or strings in data.frame [duplicate]在data.frame中交换字符或字符串[重复]
【发布时间】:2018-03-07 13:46:03
【问题描述】:

我有一个包含 Sex 列的 data.frame:

Name <- c("Alex", "Lilly", "Mark", "Oliver", "Martha", "Lucas", "Caroline")
Age <- c(25, 31, 23, 52, 76, 49, 26)
Height <- c(177, 163, 190, 179, 163, 183, 164)
Weight <- c(57, 69, 83, 75, 70,  83, 53)
Sex <- c("F", "M", "F", "F", "M", "F", "M")

如您所见,性别不正确(例如,Lilly 的性别是“M”),我想将所有“F”换成“M”,将所有“M”换成“F”。

有这样的功能吗?

【问题讨论】:

    标签: r string swap chars


    【解决方案1】:

    我们可以从base R使用chartr

    df$Sex <- chartr("FM", "MF", df$Sex)
    df$Sex
    #[1] "M" "F" "M" "M" "F" "M" "F"
    

    【讨论】:

      【解决方案2】:

      我想你可以在这里使用ifelse

      df$Sex <- ifelse(df$Sex == "F", "M", "F")
      df
      
            Name Age Height Weight Sex
      1     Alex  25    177     57   M
      2    Lilly  31    163     69   F
      3     Mark  23    190     83   M
      4   Oliver  52    179     75   M
      5   Martha  76    163     70   F
      6    Lucas  49    183     83   M
      7 Caroline  26    164     53   F
      

      Demo

      【讨论】:

        【解决方案3】:

        或者,我们可以使用dplyr case_when

        library(dplyr)
        
        df %>% 
          mutate(Sex = case_when(Sex == "F" ~ "M",
                                 Sex == "M" ~ "F",
                                 TRUE ~ NA_character_))
        

        数据:

        Name <- c("Alex", "Lilly", "Mark", "Oliver", "Martha", "Lucas", "Caroline") 
        Age <- c(25, 31, 23, 52, 76, 49, 26) 
        Height <- c(177, 163, 190, 179, 163, 183, 164) 
        Weight <- c(57, 69, 83, 75, 70, 83, 53) 
        Sex <- c("F", "M", "F", "F", "M", "F", "M")
        
        df <- data.frame(Name, Age, Height, Weight, Sex)
        

        【讨论】:

          【解决方案4】:

          当一个因素时,使用:

          df$Sex <- factor(df$Sex, c('F', 'M'), c('M', 'F'))
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-03-20
            • 1970-01-01
            • 2011-10-10
            • 2020-08-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多