gpt4 book ai didi

r - 将 "firstname lastname"更改为 "lastname, firstname"

转载 作者:行者123 更新时间:2023-12-04 10:57:57 24 4
gpt4 key购买 nike

我有一个名字列表,我需要将这些名字从“名字姓氏”转换为“姓氏,名字”。

Barack Obama
Donald J. Trump
J. Edgar Hoover
Beyonce Knowles-Carter
Sting

我使用了 G. Grothendieck 对 "last name, first name" -> "first name last name" in serialized strings 的回答前往 gsub("([^ ]*) ([^ ]*)", "\\2, \\1", str)这给了我 -
Obama, Barack
J., DonaldTrump,
Edgar, J.Hoover,
Knowles-Carter, Beyonce
Sting

我想得到什么——
Obama, Barack
Trump, Donald J.
Hoover, J. Edgar
Knowles-Carter, Beyonce
Sting

我想要一个正则表达式的答案。

最佳答案

有一个神秘的函数叫做 person专为保存名称而设计的转换函数 as.person它为你和一个 format 做这个解析之后使用它的方法(创造性地使用大括号参数)。它甚至适用于复杂的姓氏(例如 van Nistelrooy),但单一名字的结果并不令人满意。它可以通过快速结束修复 sub尽管。

x <- c("Barack Obama","Donald J. Trump","J. Edgar Hoover","Beyonce Knowles-Carter","Sting", "Ruud van Nistelrooy", "John von Neumann")
y <- as.person(x)

format(y, include=c("family","given"), braces=list(family=c("",",")))
[1] "Obama, Barack" "Trump, Donald J."
[3] "Hoover, J. Edgar" "Knowles-Carter, Beyonce"
[5] "Sting," "van Nistelrooy, Ruud"
[7] "von Neumann, John"

## fix for single names - curse you Sting!

sub(",$", "", format(y, include=c("family","given"), braces=list(family=c("",","))))
[1] "Obama, Barack" "Trump, Donald J."
[3] "Hoover, J. Edgar" "Knowles-Carter, Beyonce"
[5] "Sting" "van Nistelrooy, Ruud"
[7] "von Neumann, John"

关于r - 将 "firstname lastname"更改为 "lastname, firstname",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53672694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com