Разделение строки по первому пробелу

Я хотел бы разбить вектор символьных строк (имена людей) на два столбца (вектора). Проблема в том, что у некоторых людей фамилия состоит из двух слов. Я хочу разделить имя и фамилию на две колонки. Я могу вырезать и взять имена, используя приведенный ниже код, но фамилия ускользает от меня. (посмотрите на набл. 29 в приведенном ниже образце, чтобы понять, как у Ford есть «фамилия» Pantera L, которую нужно хранить вместе)

Что я пытался сделать до сих пор;

x<-rownames(mtcars)
unlist(strsplit(x, " .*"))

Что я ' Мне бы хотелось, чтобы это выглядело так:

            MANUF       MAKE
27          Porsche     914-2
28          Lotus       Europa
29          Ford        Pantera L
30          Ferrari     Dino
31          Maserati    Bora
32          Volvo       142E
23
задан mbq 28 November 2011 в 21:03
поделиться

2 ответа

Регулярному выражению rexp соответствует слово в начале строки, необязательный пробел, а затем остальная часть строки. Скобки - это подвыражения, к которым обращаются в виде обратных ссылок \\1 и \\2.

rexp <- "^(\\w+)\\s?(.*)$"
y <- data.frame(MANUF=sub(rexp,"\\1",x), MAKE=sub(rexp,"\\2",x))
tail(y)
#       MANUF      MAKE
# 27  Porsche     914-2
# 28    Lotus    Europa
# 29     Ford Pantera L
# 30  Ferrari      Dino
# 31 Maserati      Bora
# 32    Volvo      142E
26
ответ дан 29 November 2019 в 01:11
поделиться

Если вы можете сделать сопоставление с образцом и группой, я бы попробовал что-то вроде этого (не проверено):

\s+(.*)\s+(.*)
0
ответ дан 29 November 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: