【问题标题】:R - remove anything after comma from columnR - 从列中删除逗号后的任何内容
【发布时间】:2014-08-14 12:17:52
【问题描述】:

我想删除此列,使其仅显示姓氏 - 如果有逗号,我想删除逗号及其后面的任何内容。我的数据列混合了姓氏和姓氏,首先。数据如下:

Last Name  
Sample, A  
Tester  
Wilfred, Nancy  
Day, Bobby Jean  
Morris  

【问题讨论】:

    标签: regex r string


    【解决方案1】:

    你可以使用 gsub() 和一些正则表达式:

    > x <- 'Day, Bobby Jean'
    > gsub("(.*),.*", "\\1", x)
    [1] "Day"
    

    【讨论】:

    • 完美 - 非常感谢。我需要更多地研究这个 gsub 函数!
    • 很好,但是 "(.*?),.*" 去掉了第一个逗号之后的所有内容。
    【解决方案2】:

    你可以使用 gsub:

    gsub(",.*", "", c("last only", "last, first"))
    # [1] "last only" "last"
    

    ",.*" 说:替换逗号 (,) 和之后的每个字符 (.*),没有任何内容 ""

    【讨论】:

      【解决方案3】:
       str1 <- c("Sample, A", "Tester", "Wifred, Nancy", "Day, Bobby Jean", "Morris")
       library(stringr)
        str_extract(str1, perl('[A-Za-z]+(?=(,|\\b))'))
       #[1] "Sample" "Tester" "Wifred" "Day"   "Morris"  
      

      匹配字母[A-Za-z]+ 并提取后面跟, 或单词边界的字母。

      【讨论】:

        【解决方案4】:

        这会起作用

        a <- read.delim("C:\\Desktop\\a.csv", row.names = NULL,header=TRUE, 
                         stringsAsFactors=FALSE,sep=",")
        a=as.matrix(a)
        Data=str_replace_all(string=a,pattern="\\,.*$",replacement=" ")
        

        【讨论】:

          【解决方案5】:

          也可以试试strsplit:

          string <- c("Sample, A", "Tester", "Wifred, Nancy", "Day, Bobby Jean", "Morris")
          
          sapply(strsplit(string, ","), "[", 1)
          #[1] "Sample" "Tester" "Wifred" "Day"    "Morris"
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-01-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-05-30
            • 2021-04-04
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多