使用Tidyr将名称分隔为不同的列

时间:2016-04-28 04:04:13

标签: r tidyr

这个问题是另一篇题为“将名称”分离为数据框的“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"), "([^ ]+) (.*)")

1 个答案:

答案 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