如何仅将字符串的第一个字符保留在空格之前,并将所有字符保留在R中

时间:2018-10-24 11:47:12

标签: r regex data.table

我有以下data.table

library(data.table)

dt <- data.table(c('Female 18 - 24', 'Male 18+', 'People 18 -54'))

如何将其转换为

dt <- data.table(c('F 18 - 24', 'M 18+', 'P 18 -54'))使用regex吗?

2 个答案:

答案 0 :(得分:2)

 gsub('(^[A-Z])[A-Za-z]+\\s(*.)','\\1 \\2',c('Female 18 - 24', 'Male 18+', 'People 18 -54'))
 [1] "F 18 - 24" "M 18+"     "P 18 -54" 

  • (^[A-Z])将第一个字母作为group1
  • [A-Za-z]+\\s由空格引起的任意数量的小写字母
  • (*.)将位于空格后的所有内容作为group2
  • '\\1 \\2'最后,返回以空格

    分隔的group1和group2
  • 答案 1 :(得分:0)

    require(data.table)
    require(stringi)
    dt <- data.table(V1=c('Female 18 - 24', 'Male 18+', 'People 18 -54'))
    dt[,V2:= stri_replace_first_regex(V1,"(?<=\\w)\\w+","")]  
    dt
    
               V1        V2
    1: Female 18 - 24    F 18 - 24
    2: Male 18+          M 18+
    3: People 18 -54     P 18 -54