Извлечь текст перед точкой или двоеточием - PullRequest
0 голосов
/ 19 сентября 2019

Я хотел бы извлечь часть строки, хитрая часть в том, что текст, который я хочу извлечь, находится перед точкой или двоеточием, так как мне заставить его работать?

  city<- c('Kirkland-1234.It is a goodtown','Bethesda-345. small town', 'Wellington: 12345') 

Поэтому я хотел бы получить текст перед первым полным остановом или первым двоеточием.Какие-либо предложения?

Ответы [ 3 ]

0 голосов
/ 19 сентября 2019

Или:

library(stringr)

city <- c('Kirkland-1234.It is a goodtown','Bethesda-345. small town', 'Wellington: 12345')

str_extract(city, "^[^\\.:]+")

#1] "Kirkland-1234" "Bethesda-345"  "Wellington" 
0 голосов
/ 19 сентября 2019
stringr::str_locate(TEXT,":|,")[1]

Код, который вы хотите, теперь у вас просто есть список?Затем используйте вышеупомянутое в lapply:

library(stringr)    
city_list <- lapply(city, str_locate,":|,")
cities <- lapply(city_list,`[[`, 1)

Это может быть еще проще в кадре данных:

library(dplyr)
library(stringr)

df %>%
mutate(city = str_locate(city,":|,")[1])
0 голосов
/ 19 сентября 2019

Мы можем использовать sub в базе R

sub("(.*?)[\\.|:].*", "\\1", city)
#[1] "Kirkland-1234" "Bethesda-345"  "Wellington"  

Это извлекает все до первого появления полной остановки или двоеточия.

...