【发布时间】:2022-08-17 00:47:59
【问题描述】:
嗨,我有一列有名字。它的名称格式为:
c(\"Tom\", \"Tom Turner\", \"Dr. Tom Turner\", \"R. Tom Turner\", \"J Tom Turner\", \"Jr. Tom Turner\")。
我只想提取名字,但由于名称上的前缀,我不知道如何以一种简单的方式进行操作。如果您有任何建议,请告诉我。
-
你试过什么?如果没有前缀,您将如何提取名字?
标签: r
嗨,我有一列有名字。它的名称格式为:
c(\"Tom\", \"Tom Turner\", \"Dr. Tom Turner\", \"R. Tom Turner\", \"J Tom Turner\", \"Jr. Tom Turner\")。
我只想提取名字,但由于名称上的前缀,我不知道如何以一种简单的方式进行操作。如果您有任何建议,请告诉我。
标签: r
这是一种方法:
library(magrittr) # for %>%
dirty_names <- c(
"Tom",
"Tom Turner",
"Dr. Tom Turner",
"R. Tom Turner",
"J Tom Turner",
"Jr. Tom Turner"
)
dirty_names %>%
# Remove first word if it ends with . e.g. Dr., Jr., R.
sub("^\\w+\\.", "", .) %>%
trimws() %>%
# Remove first word if it is one letter e.g. J
sub("^[A-Za-z] ", "", .) %>%
# Delete everything after first word
sub("(\\w+).*", "\\1", .)
# [1] "Tom" "Tom" "Tom" "Tom" "Tom" "Tom"
【讨论】: