【发布时间】:2016-11-01 15:53:26
【问题描述】:
示例数据框:
name <- c("Smith John Michael","Smith, John Michael","Smith John, Michael","Smith-John Michael","Smith-John, Michael")
df <- data.frame(name)
df
name
1 Smith John Michael
2 Smith, John Michael
3 Smith John, Michael
4 Smith-John Michael
5 Smith-John, Michael
我需要实现以下期望的输出:
name first.name last.name
1 Smith John Michael John Smith
2 Smith, John Michael John Smith
3 Smith John, Michael Michael Smith John
4 Smith-John Michael Michael Smith-John
5 Smith-John, Michael Michael Smith-John
规则是:如果字符串中有逗号,则前面的任何内容都是姓氏。逗号后面的第一个单词是名字。如果字符串中没有逗号,则第一个单词是姓氏,第二个单词是姓氏。带连字符的词是一个词。我宁愿使用 dplyr 和正则表达式来实现这一点,但我会采取任何解决方案。感谢您的帮助
【问题讨论】:
标签: r regex dplyr tidyr stringr