【问题标题】:String Manipulation in R: drop between , and .R 中的字符串操作:介于 和 之间
【发布时间】:2016-11-12 20:40:55
【问题描述】:

我有一个名为 Names 的向量,其中显然包含所有年龄段的人的姓名,包括男性和女性。

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

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

例子:

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

我如何保留除头衔(“先生”、“小姐”等)以外的所有内容(全名)?

【问题讨论】:

  • gsub 可以解决问题

标签: r regex


【解决方案1】:

你可以使用这个正则表达式来匹配整个事情:(see on regex101)

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

第 1 组匹配姓氏,第 2 组匹配名字。

然后,您可以将每个匹配项替换为 \2 \1 以获取 firstname lastname 或替换为 \1 \2 以获取 lastname firstname

代码

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

【讨论】:

  • 还有很多其他的标题,用空格替换,.之间的所有内容可能更好?
  • 你需要perl=TRUE吗?并且不确定是否有区分大小写的标志:在标准 R 中,它将是 ignore.case=TRUE(但当 perl=TRUE 时,可能有一个不区分大小写的标志进入正则表达式?
  • 更新了我的答案。我猜perl=TRUE 不是必需的,这适用于任何正则表达式引擎。更新的答案不再需要标记。
  • 感谢@Croutonix 和所有评论提供进一步见解的人!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
相关资源
最近更新 更多