How to search for multiple strings and replace them with nothing within a list of strings

前端 未结 3 879
借酒劲吻你
借酒劲吻你 2021-02-05 17:52

I have a column in a dataframe like this:

npt2$name
#  [1] \"Andreas Groll, M.D.\"
#  [2] \"\"
#  [3] \"Pan-Chyr Yang, PHD\"
#  [4] \"Suh-Fang Jeng, Sc.D\"
#  [5         


        
相关标签:
3条回答
  • 2021-02-05 18:21

    With a single ugly regex:

     gsub('[M,P].?D.?','',npt2$name)
    

    Which says, find characters M or P followed by zero or one character of any kind, followed by a D and zero or one additional character. More explicitly, you could do this in three steps:

    npt2$name <- gsub('MD','',npt2$name)
    npt2$name <- gsub('M\\.D\\.','',npt2$name)
    npt2$name <- gsub('PhD','',npt2name)
    

    In those three, what's happening should be more straight forward. the second replacement you need to "escape" the period since its a special character.

    0 讨论(0)
  • 2021-02-05 18:33

    Either of these:

    gsub("MD|M\\.D\\.|PHD", "", test)  # target specific strings
    gsub("\\,.+$", "", test)        # target all characters after comma
    

    Both Matt Parker above and Tommy below have raised the question whether 'M.R.C.P.', 'PhD', 'D.Phil.' and 'Ph.D.' or other British or Continental designations of doctorate level degrees should be sought out and removed. Perhaps @user56 can advise what the intent was.

    0 讨论(0)
  • 2021-02-05 18:42

    Here's a variant that removes the extra ", " too. Does not require touppper either - but if you want that, just specify ignore.case=TRUE to gsub.

    test <- c("Andreas Groll, M.D.", 
      "",
      "Pan-Chyr Yang, PHD",
      "Suh-Fang Jeng, Sc.D",
      "Peter S Sebel, MB BS, PhD Chantal Kerssens, PhD",
      "Lawrence Currie, MD")
    
    gsub(",? *(MD|M\\.D\\.|P[hH]D)", "", test)
    #[1] "Andreas Groll"                         ""                                     
    #[3] "Pan-Chyr Yang"                         "Suh-Fang Jeng, Sc.D"                  
    #[5] "Peter S Sebel, MB BS Chantal Kerssens" "Lawrence Currie"
    
    0 讨论(0)
提交回复
热议问题