如何从列中的名称中提取标题?

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)