如何从列中的名称中提取标题?
How can I extract from title from name in a column?
我有一个 "Hobs, Mr. jack" 形式的名称列,即姓氏、职务。名。标题有 4 种类型 -"Mr."、"Mrs."、"Miss."、"Master." 如何搜索列中的每个项目和 return 标题,我可以存储在另一列中 ?
Name <- c("Hobs, Mr. jack","Hobs, Master. John","Hobs, Mrs. Nicole",........)
所需的输出 - 具有值的列 "title" - ("Mr","Master", "Mrs",.....)
我试过这样的方法:
f <- function(d) {
if (grep("Mr", d$title)) {
gsub("$Mr$", "Mr", d$title, ignore.case = T)
}
}
没有成功 >.<
也许是这样的:
library(stringr)
> Name <- c("Hobs, Mr. jack","Hobs, Master. John","Hobs, Mrs. Nicole")
> str_extract(string = Name,pattern = "(Mr|Master|Mrs)\.")
[1] "Mr." "Master." "Mrs."
更高级的正则表达式可能会预先排除句点,或者您可以在第二步中删除它们。
将数据集名称视为 df,将列视为名称。新列名称将是标题。
df$Title <- gsub('(.*, )|(\..*)', '', df$Name)
我有一个 "Hobs, Mr. jack" 形式的名称列,即姓氏、职务。名。标题有 4 种类型 -"Mr."、"Mrs."、"Miss."、"Master." 如何搜索列中的每个项目和 return 标题,我可以存储在另一列中 ?
Name <- c("Hobs, Mr. jack","Hobs, Master. John","Hobs, Mrs. Nicole",........)
所需的输出 - 具有值的列 "title" - ("Mr","Master", "Mrs",.....)
我试过这样的方法:
f <- function(d) {
if (grep("Mr", d$title)) {
gsub("$Mr$", "Mr", d$title, ignore.case = T)
}
}
没有成功 >.<
也许是这样的:
library(stringr)
> Name <- c("Hobs, Mr. jack","Hobs, Master. John","Hobs, Mrs. Nicole")
> str_extract(string = Name,pattern = "(Mr|Master|Mrs)\.")
[1] "Mr." "Master." "Mrs."
更高级的正则表达式可能会预先排除句点,或者您可以在第二步中删除它们。
将数据集名称视为 df,将列视为名称。新列名称将是标题。
df$Title <- gsub('(.*, )|(\..*)', '', df$Name)