【问题标题】:Get the strings before the comma with R用 R 获取逗号前的字符串
【发布时间】:2013-10-19 16:48:54
【问题描述】:

我是 R 的初学者。现在,我在这样的 data.frame 中有一个向量

city
Kirkland,
Bethesda,
Wellington,
La Jolla,
Berkeley,
Costa, Evie KW172NJ
Miami,
Plano,
Sacramento,
Middletown,
Webster,
Houston,
Denver,
Kirkland,
Pinecrest,
Tarzana,
Boulder,
Westfield,
Fair Haven,
Royal Palm Beach, Fl
Westport,
Encino,
Oak Ridge,

我想清理它。我想要的是逗号前的所有城市名称。如何在 R 中获得结果?谢谢!

【问题讨论】:

    标签: string r split extract


    【解决方案1】:

    您可以使用gsub 和一些正则表达式:

    cities <- gsub("^(.*?),.*", "\\1", df$city)
    

    这个也可以:

    cities <- gsub(",.*$", "", df$city)
    

    【讨论】:

    • +1 我正要提出几乎完全相同的建议...gsub( "^(.+),.*" , "\\1" , df$city )
    【解决方案2】:

    您可以使用regexpr 查找每个元素中第一个逗号的位置,并使用substr 将其截断:

    x <- c("London, UK", "Paris, France", "New York, USA")
    
    substr(x,1,regexpr(",",x)-1)
    [1] "London"   "Paris"    "New York"
    

    【讨论】:

      【解决方案3】:

      只是为了好玩,你可以使用strsplit

      > x <- c("London, UK", "Paris, France", "New York, USA")
      > sapply(strsplit(x, ","), "[", 1)
      [1] "London"   "Paris"    "New York"
      

      【讨论】:

        【解决方案4】:

        这也有效:

        x <- c("London, UK", "Paris, France", "New York, USA")
        
        library(qdap)
        beg2char(x, ",")
        
        ## > beg2char(x, ",")
        ## [1] "London"   "Paris"    "New York"
        

        【讨论】:

          【解决方案5】:

          如果这是数据框中的一列,我们可以使用 tidyverse。

          library(dplyr)
          x <- c("London, UK", "Paris, France", "New York, USA")
          x <- as.data.frame(x)
          x %>% separate(x, c("A","B"), sep = ',')
                  A       B
          1   London      UK
          2    Paris  France
          3 New York     USA
          

          【讨论】:

            猜你喜欢
            • 2021-01-31
            • 1970-01-01
            • 2015-02-02
            • 1970-01-01
            • 1970-01-01
            • 2013-06-24
            • 2012-05-19
            • 2011-09-07
            • 2014-12-05
            相关资源
            最近更新 更多