这个问题是另一篇题为“将名称”分离为数据框的“FirstName”和“LastName”列的文章的扩展 - 下面提供了数据框。
NAME <- c('John Doe','Peter Gynn','Jolie Hope-Douglas', 'Muhammad Arnab Halwai')
TITLE <- c("assistant", "manager", "assistant", "specialist")
tteam<- data.frame(NAME, TITLE)
提供了一个很好的代码来说明如何使用tidyr
将每个名称分隔成名和姓。我有一种情况,其中有三个部分的名称,例如示例中提供的名称 - &#34; Muhammad Arnab Halwai&#34;。我相信下面的代码会将名称分成&#34; Muhammad&#34;和#34; Arnab Halwai&#34;。我试图重新配置代码以创建&#34; Muhammad Arnab&#34;和&#34; Halwai&#34;。
library(tidyr)
extract(tteam, NAME, c("FirstName", "LastName"), "([^ ]+) (.*)")
答案 0 :(得分:2)
只需稍微切换正则表达式:
extract(tteam, NAME, c("FirstName", "LastName"), "(.*) ([^ ]+)$")
# FirstName LastName TITLE
# 1 John Doe assistant
# 2 Peter Gynn manager
# 3 Jolie Hope-Douglas assistant
# 4 Muhammad Arnab Halwai specialist