Как удалить первые несколько символов из значений столбца R? - PullRequest
2 голосов
/ 20 апреля 2020

У меня есть столбец, который состоит из значений, разделенных "|" и сгенерировал этот код, но он принимает все до «|», а не после. Имейте в виду, что этот столбец является «Фактором».

INV | Building One
BO | Building Twenty Five
VC | Corporate

sub("([A-Za-z]+).*", "\\1"

Как удалить первую часть перед «|» и сохранить только все после в R, используя 'sub'?

Ожидаемый результат:

Building One
Building Twenty Five
Corporate

Ответы [ 2 ]

5 голосов
/ 20 апреля 2020

Требуемое регулярное выражение: ".*?\\|".

  • . соответствует всем символам
  • * ноль или более раз
  • ? make * 'lazy'
  • \\| match "|" это также регулярное выражение, поэтому его необходимо экранировать *

    КСТАТИ: tidyr поставляется с милой маленькой функцией, которая поможет здесь:

    library(tidyr)
    df %>% 
      separate(col1, into = c("col1", "col2"), sep = "\\|")
    #>   col1                  col2
    #> 1 INV           Building One
    #> 2  BO   Building Twenty Five
    #> 3  VC              Corporate
    

    Она разбивает ваш один столбец на два, что кажется правдоподобным здесь.

3 голосов
/ 20 апреля 2020

Другой подход использования sub

sub(".*\\|\\s+(.*)","\\1",s)

такой, что

> sub(".*\\|\\s+(.*)","\\1",s)
[1] "Building One"         "Building Twenty Five"
[3] "Corporate"  

Данные

s <- c("INV | Building One", "BO | Building Twenty Five", "VC | Corporate")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...