我可能在问一个微不足道的问题,但我宁愿问和学习,而忽略它。我有一个名为Names
的矢量,它明显包含所有年龄段的男性和女性的姓名。字符串操作
我的任务是保留每个人的全名。原始载体Names
的格式如下:
'last name','title'.'first name'
例子:
Names <- c("Jackson, Mr. James", "Johnson, Miss. Elizabeth")
我如何保留一切(全名),比标题(“先生”,其他“小姐”。等)?
我可能在问一个微不足道的问题,但我宁愿问和学习,而忽略它。我有一个名为Names
的矢量,它明显包含所有年龄段的男性和女性的姓名。字符串操作
我的任务是保留每个人的全名。原始载体Names
的格式如下:
'last name','title'.'first name'
例子:
Names <- c("Jackson, Mr. James", "Johnson, Miss. Elizabeth")
我如何保留一切(全名),比标题(“先生”,其他“小姐”。等)?
您可以使用此正则表达式匹配整个事情:(see on regex101)
(.*),.*\. (.*)
组1的姓氏,第2场比赛第一名称相匹配。
然后,您可以替换每个匹配\2 \1
为firstname lastname
或\1 \2
替换为lastname firstname
代码
gsub("(.*),.*\. (.*)", "\2 \1", yourArray)
还有很多很多其他的标题,也许更好用空格替换','和'.'之间的所有内容? – zx8754
你需要'perl = TRUE'吗?并不确定是否区分大小写标志:在标准R中它会是'ignore.case = TRUE'(但是当'perl = TRUE'时可能会将大小写不敏感的标志放入正则表达式中? –
已更新我的答案。 'perl = TRUE'没有必要,这可以在任何正则表达式引擎中工作。更新后的答案不再需要标志。 –
'gsub'会做的伎俩 –