R将单词与数字分开

时间:2019-04-25 19:12:57

标签: r regex data-cleaning

我需要清理一些包含单词和数字或仅包含数字的数据字符串。

下面是一个玩具样本

library(tidyverse)

c("555","Word 123", "two words 123", "three words here 123") %>%  
sub("(\\w+) (\\d*)",  "\\1|\\2", .)

结果是这样的:

[1] "555"                  "Word|123"             "two|words 123"        "three|words here 123"

但是我要放置'|'在最后一组数字之前,如下所示

[1] "|555"                  "Word|123"             "two words|123"        "three words here|123"

2 个答案:

答案 0 :(得分:2)

您可以使用

^(.*?)\s*(\d*)$

替换为\1|\2。参见regex demo

enter image description here

在R中:

sub("^(.*?)\\s*(\\d*)$", "\\1|\\2", .)

详细信息

  • ^-字符串的开头
  • (.*?)-捕获组1:尽可能少的0个字符
  • \s*-零个或多个空格
  • (\d*)-捕获组2:零个或多个数字
  • $-字符串的结尾。

答案 1 :(得分:1)

我们可以使用sub来匹配零个或多个空格(\\s*),后跟一个我们捕获为一组的数字((\\d)),在替换中使用{{1} },然后是捕获的组的反向引用(|

\\1

数据

sub("\\s*(\\d)", "|\\1", v1)
#[1] "|555"                 "Word|123"            
#[3] "two words|123"        "three words here|123"