在R中拆分复杂的字符串

时间:2015-08-20 12:58:28

标签: r string split

我有一个包含人名全名的数据集,我必须将其拆分为名字,姓氏和名字。我正打算使用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"  

2 个答案:

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

这个效果最好!谢谢,奥利弗!