gpt4 book ai didi

r - 在 R 数据框上格式化作者姓名列

转载 作者:行者123 更新时间:2023-12-01 22:50:16 25 4
gpt4 key购买 nike

从这里的前一个问题 (Format author's name with stringr) 得出,我想用不同的字符串编辑整个变量。

之前的解决方案不起作用,因为它会将所有字符串重复到每个字符串。

library(dplyr)

x <- data.frame(
names = c("Daenerys Targaryen, George R. R. Martin, Luís Inácio Lula da Silva",
"Hadley Alexander Wickham, Joseph J. Allaire",
"Stack Overflow"
)
)

format_names <- function(variable) {
variable %>%
strsplit(", ") %>%
unlist() %>%
gsub("(.*?) (\\w+$)", "\\U\\2\\E, \\1", ., perl = TRUE) %>%
gsub(" ([A-Z])\\w*\\.?", " \\1.", .) %>%
paste(collapse = "; ")
}

x %>%
mutate(new_names = format_names(names))

#> names
#> 1 Daenerys Targaryen, George R. R. Martin, Luís Inácio Lula da Silva
#> 2 Hadley Alexander Wickham, Joseph J. Allaire
#> 3 Stack Overflow
#> new_names
#> 1 TARGARYEN, D.; MARTIN, G. R. R.; SILVA, L. I. L. da; WICKHAM, H. A.; ALLAIRE, J. J.; OVERFLOW, S.
#> 2 TARGARYEN, D.; MARTIN, G. R. R.; SILVA, L. I. L. da; WICKHAM, H. A.; ALLAIRE, J. J.; OVERFLOW, S.
#> 3 TARGARYEN, D.; MARTIN, G. R. R.; SILVA, L. I. L. da; WICKHAM, H. A.; ALLAIRE, J. J.; OVERFLOW, S.

创建于 2022-11-21 reprex v2.0.2

最佳答案

您需要将 unlist() 替换为保留组的内容。 sapply 可以提供帮助

format_names <- function(variable) {
variable %>%
strsplit(", ") %>%
sapply(. %>%
gsub("(.*?) (\\w+$)", "\\U\\2\\E, \\1", ., perl = TRUE) %>%
gsub(" ([A-Z])\\w*\\.?", " \\1.", .) %>%
paste(collapse = "; "))
}

关于r - 在 R 数据框上格式化作者姓名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74520801/

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