如何在R中的关键字前添加逗号?

问题描述 投票:0回答:1

我目前有一个城市数据框/向量,其末尾有以以下任意内容开头的单词:Util、Municipal、Police、Water 或末尾有 #。

如何前往:

科尔
假市政法院之城
假装水务之城
非真正警察局之城
欺诈山公用事业
El Imagined 第 344 区法院

对此:

科尔
德克萨斯州假城市法院
德克萨斯州假装市自来水公司
非真实市,德克萨斯州警察局
弗劳德山,德克萨斯州公用事业公司
El Imagined,德克萨斯州第 344 号地方法院

我当前的代码是:

DATA %>%
  mutate(col = str_replace(col, "(?i)(?>=(UTIL | MUNICIPAL | Police | Water | ^([0-9]+)")),?\\s", ", TX"))

认为每个关键字都正确包含在这个表达式中。我绝对不确定的是我是否弄错了数字。

r regex data-manipulation
1个回答
0
投票

你可以使用

x <- c("City of Fake Municipal Court", "City of Pretend Water Utility","City of Not Real Police Department","Fraud Hill Utility","El Imagined 344th District Court")
regex <- "(?i)\\s*\\b(util(?:it(?:y|ies))?|MUNICIPAL|Police|Water|[0-9]+(?:st|[rn]d|th)?)(?:,?\\s)?"
trimws(sub(regex, ", TX ", x, perl=TRUE))

请参阅 regex 演示R 演示。注意

sub
只会替换第一次出现的情况,并且 PCRE 模式需要
perl=TRUE
才能与
sub
配合使用。

图案详情

  • (?i)
    - 模式不区分大小写
  • \s*
    - 零个或多个空格
  • \b
    - 单词边界
  • (util(?:it(?:y|ies))?|MUNICIPAL|Police|Water|[0-9]+(?:st|[rn]d|th)?)
    - 第 1 组:
    util
    后跟一个可选的
    it
    ,后跟
    y
    ies
    ,或
    MUNICIPAL
    ,或
    Police
    ,或
    Water
    ,或一个或更多数字,可选后跟
    st
    r
    n
    ,然后是
    d
    th
  • (?:,?\s)?
    - 可选的非捕获组,匹配出现一次或零次的可选逗号,然后是空格字符。
© www.soinside.com 2019 - 2024. All rights reserved.