replace a specific strings from multiple columns in a dataframe

前端 未结 4 1518
失恋的感觉
失恋的感觉 2021-01-27 17:49

I want to replace the strings \"aa\" and \"aaa\" in the dataframe below with\"\"

data = data.frame(attr = c(1:4), type1=c(         


        
相关标签:
4条回答
  • 2021-01-27 18:20
    data <- apply(data,2,function(x) gsub("aa|aaa","",x))
         attr type1 type2
    [1,] "1"  ""    ""   
    [2,] "2"  "b"   ""   
    [3,] "3"  ""    ""   
    [4,] "4"  "b"   ""   
    

    You could alternatively use

    data <- apply(data,2,function(x) gsub("a{2,3}","",x))
    
    0 讨论(0)
  • 2021-01-27 18:24

    You could just set option fixed = FALSE and delete all the a's.

    data <- as.data.frame(apply(data, 2, function(x) gsub("a",'', x, fixed = FALSE)))
    data
    #   attr type1 type2
    # 1    1            
    # 2    2     b      
    # 3    3            
    # 4    4     b  
    
    0 讨论(0)
  • 2021-01-27 18:28
     dat[2:3] <- lapply(dat[2:3], gsub, pattern = '[a]{2,}', replacement = '')
    

    The result:

    > dat
      attr type1 type2
    1    1            
    2    2     b      
    3    3            
    4    4     b      
    

    Data used:

    dat <- data.frame(attr = c(1:4), type1 = c('aa','b'), type2 = c("aaa", "aa"))
    
    0 讨论(0)
  • 2021-01-27 18:30
    library(dplyr)
    data2 = data %>%
      mutate(type1 = recode(type1, "aa" = "", "aaa" = ""),
             type2 = recode(type2, "aa" = "", "aaa" = ""))
    
    attr type1 type2
    1    1            
    2    2     b      
    3    3            
    4    4     b      
    

    if you wanna generalize, taking from @denis answer:

    data2 = data %>%
      mutate_all(function(x) gsub("aa|aaa","",x))
    
    0 讨论(0)
提交回复
热议问题