Получите строки перед запятой с R

Я начинаю с R. Теперь у меня есть вектор в data.frame, как этот

city
Kirkland,
Bethesda,
Wellington,
La Jolla,
Berkeley,
Costa, Evie KW172NJ
Miami,
Plano,
Sacramento,
Middletown,
Webster,
Houston,
Denver,
Kirkland,
Pinecrest,
Tarzana,
Boulder,
Westfield,
Fair Haven,
Royal Palm Beach, Fl
Westport,
Encino,
Oak Ridge,

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

Ответ 1

Вы можете использовать gsub с небольшим количеством регулярных выражений:

cities <- gsub("^(.*?),.*", "\\1", df$city)

Это тоже работает:

cities <- gsub(",.*$", "", df$city)

Ответ 2

Просто для удовольствия вы можете использовать strsplit

> x <- c("London, UK", "Paris, France", "New York, USA")
> sapply(strsplit(x, ","), "[", 1)
[1] "London"   "Paris"    "New York"

Ответ 3

Вы можете использовать regexpr, чтобы найти позицию первой запятой в каждом элементе и использовать substr, чтобы обрезать их следующим образом:

x <- c("London, UK", "Paris, France", "New York, USA")

substr(x,1,regexpr(",",x)-1)
[1] "London"   "Paris"    "New York"

Ответ 4

Это также работает:

x <- c("London, UK", "Paris, France", "New York, USA")

library(qdap)
beg2char(x, ",")

## > beg2char(x, ",")
## [1] "London"   "Paris"    "New York"

Ответ 5

Если это был столбец в кадре данных, мы можем использовать tidyverse.

library(dplyr)
x <- c("London, UK", "Paris, France", "New York, USA")
x <- as.data.frame(x)
x %>% separate(x, c("A","B"), sep = ',')
        A       B
1   London      UK
2    Paris  France
3 New York     USA