2016-11-12 100 views
0

我可能在问一个微不足道的问题,但我宁愿问和学习,而忽略它。我有一个名为Names的矢量,它明显包含所有年龄段的男性和女性的姓名。字符串操作

我的任务是保留每个人的全名。原始载体Names的格式如下:

'last name','title'.'first name' 

例子:

Names <- c("Jackson, Mr. James", "Johnson, Miss. Elizabeth") 

我如何保留一切(全名),比标题(“先生”,其他“小姐”。等)?

+0

'gsub'会做的伎俩 –

回答

2

您可以使用此正则表达式匹配整个事情:(see on regex101

(.*),.*\. (.*) 

组1的姓氏,第2场比赛第一名称相匹配。

然后,您可以替换每个匹配\2 \1firstname lastname\1 \2替换为lastname firstname

代码

gsub("(.*),.*\. (.*)", "\2 \1", yourArray) 
+0

还有很多很多其他的标题,也许更好用空格替换','和'.'之间的所有内容? – zx8754

+0

你需要'perl = TRUE'吗?并不确定是否区分大小写标志:在标准R中它会是'ignore.case = TRUE'(但是当'perl = TRUE'时可能会将大小写不敏感的标志放入正则表达式中? –

+0

已更新我的答案。 'perl = TRUE'没有必要,这可以在任何正则表达式引擎中工作。更新后的答案不再需要标志。 –