【发布时间】:2014-10-21 14:32:33
【问题描述】:
我正在努力弄清楚如何将数据框中的单列“名称”拆分为同一数据框中的另外两列 FistName 和 LastName。挑战是我的一些名字有几个姓氏。本质上,我想取第一个单词(或字符串的元素)并将其放入 FirstName 列,然后将所有后续文本(当然减去空格)放入 LastName 列。
这是我的 DataFrame “团队”
NAME <- c('John Doe','Peter Gynn','Jolie Hope-Douglas', 'Muhammad Arnab Halwai')
TITLE <- c("assistant", "manager", "assistant", "specialist")
tteam<- data.frame(NAME, TITLE)
我想要的输出是这样的:
FirstName <- c("John", "Peter", "Jolie", "Muhammad")
LastName <- c("Doe", "Gynn", "Hope-Douglas", "Arnab Halwai")
tteamdesire <- data.frame(FirstName, LastName, TITLE)
我已尝试使用以下代码创建一个仅包含名称的新数据框,该数据框允许我从第一列中提取名字。但是,我无法按任何顺序排列姓氏。
names <- tteam$NAME ## puts full names into names vector
namesdf <- data.frame(do.call('rbind', strsplit(as.character(names),' ',fixed=TRUE)))
## splits out all names into a dataframe PROBLEM IS HERE!
【问题讨论】:
-
我认为您无法正确理解这一点。有些人有几个名字,有些人有几个姓氏,还有一种叫做“中间名”的东西。
-
我相信这篇文章应该对你有所帮助:stackoverflow.com/questions/8299978/…
-
请注意,在现实世界中,这是一个毫无意义的练习——人们有多个名字或姓氏,把他们的姓放在第一位,姓放在第二位或第三位,我曾经听说一个中国学生的由三部分组成的姓名以 A B C 的所有 6 种可能排列出现在学生记录数据库中。