2016-04-28 158 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 
相關問題