2016-04-28 159 views
-1

此问题是另一篇文章的标题为 - 将“名称”分隔为数据框的“名”和“姓”列的扩展 - 数据框在下面提供。使用Tidyr将名称分隔到不同列中

NAME <- c('John Doe','Peter Gynn','Jolie Hope-Douglas', 'Muhammad Arnab Halwai') 
TITLE <- c("assistant", "manager", "assistant", "specialist") 
tteam<- data.frame(NAME, TITLE) 

一个漂亮码提供给演示如何使用tidyr每个名称分为姓和名。我有一个名称包含三个部分的情况,例如示例中提供的名称 - “Muhammad Arnab Halwai”。我相信下面的代码将把名字分成“Muhammad”和“Arnab Halwai”。我正在尝试重新配置代码以创建“Muhammad Arnab”和“Halwai”。

library(tidyr) 
extract(tteam, NAME, c("FirstName", "LastName"), "([^ ]+) (.*)") 
+0

你可以只用'提取物(tteam,NAME,C( “名字”, “姓氏”),“得到期望的结果(。+)(。+)')'或'separate(tteam,NAME,c(“FirstName”,“LastName”),'(?= [^] + $)')'。检查你的数据,但;后缀或文章(“戴高乐”)将破坏这种做法。 – alistaire

回答

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 
相关问题