R отделяет слова от чисел в строке - PullRequest
0 голосов
/ 25 апреля 2019

Мне нужно очистить некоторые строки данных, которые содержат слова и цифры или только цифры.

ниже образец игрушки

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 ]

2 голосов
/ 25 апреля 2019

Вы можете использовать

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

Заменить на \1|\2. Смотрите regex demo .

enter image description here

В R:

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

Детали

  • ^ - начало строки
  • (.*?) - Группа захвата 1: любые 0+ символов, как можно меньше
  • \s* - ноль или более пробелов
  • (\d*) - Группа захвата 2: ноль или более цифр
  • $ - конец строки.
1 голос
/ 26 апреля 2019

Мы можем использовать sub для соответствия нулю или большему количеству пробелов (\\s*), за которыми следует цифра, которую мы записываем как группа ((\\d)), а при замене использовать |, за которой следует обратная ссылка (\\1) захваченной группы

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

данные

v1 <- c("555","Word 123", "two words 123", "three words here 123")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...