我有一个包含人名全名的数据集,我必须将其拆分为名字,姓氏和名字。我正打算使用tidyr :: separate,但问题是数据集包含各种长度的字符串:有些人只有两个名字(第一个和最后一个),有些人甚至更多,有些人有复杂的名字(例如荷兰语) 'van Gogh')或带有头衔的名字('Brown CFA')。任何想法如何去做?
提取物:
> database$Full_Name[15:25]
[1] "David Regan" "Izaque Iuzuru Nagata"
[3] "Christian Schmit de la Breli" "Peter Doyle"
[5] "Hans R.Bruetsch" "Marcus Reichel"
[7] "Per-Axel Koch" "Louis Van der Walt"
[9] "Mario Adamek" "Ugur Tozsekerli"
[11] "Judit Ludvai"
答案 0 :(得分:1)
如果您愿意使用品牌spankin new V8-infused github package,那么这应该有效:
Post obj = new Post();
它基于this node.js module并在后台使用V8软件包来完成该模块中# YOU WILL NEED TO DO THIS FIRST!
# devtools::install_github("hrbrmstr/humanparser")
library(humanparser)
parse_name("John Smith Jr.")
## $firstName
## [1] "John"
##
## $suffix
## [1] "Jr."
##
## $lastName
## [1] "Smith"
##
## $fullName
## [1] "John Smith Jr."
full_names <- c("David Regan", "Izaque Iuzuru Nagata",
"Christian Schmit de la Breli", "Peter Doyle", "Hans R.Bruetsch",
"Marcus Reichel", "Per-Axel Koch", "Louis Van der Walt",
"Mario Adamek", "Ugur Tozsekerli", "Judit Ludvai" )
parse_names(full_names)
## Source: local data frame [11 x 4]
##
## firstName lastName fullName middleName
## 1 David Regan David Regan NA
## 2 Izaque Nagata Izaque Iuzuru Nagata Iuzuru
## 3 Christian de la Breli Christian Schmit de la Breli Schmit
## 4 Peter Doyle Peter Doyle NA
## 5 Hans R.Bruetsch Hans R.Bruetsch NA
## 6 Marcus Reichel Marcus Reichel NA
## 7 Per-Axel Koch Per-Axel Koch NA
## 8 Louis Van der Walt Louis Van der Walt NA
## 9 Mario Adamek Mario Adamek NA
## 10 Ugur Tozsekerli Ugur Tozsekerli NA
## 11 Judit Ludvai Judit Ludvai NA
函数的所有脏工作(是的,它的R调用要完成的JavaScript。但是,有人应该在某些时候将代码移植到R,因为Python有类似的模块。
答案 1 :(得分:1)
install.packages("humanparser")
这个效果最好!谢谢,奥利弗!