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

时间:2015-12-04 23:19:02

标签: regex r grep gsub grepl

我有一个名单的形式" Hobs,杰克先生"即姓氏,头衔。名字。标题有4种类型 - " Mr。"," Mrs."," Miss。"," Master。"如何搜索列中的每个项目&返回标题,我可以存储在另一列?

Name <- c("Hobs, Mr. jack","Hobs, Master. John","Hobs, Mrs. Nicole",........)

所需的输出 - 列&#34;标题&#34;值为 - ("Mr","Master", "Mrs",.....)

我尝试过这样的事情:

f <- function(d) {
      if (grep("Mr", d$title)) {
                  gsub("$Mr$", "Mr", d$title, ignore.case = T)
           }
 }

没有成功&gt;。&lt;

2 个答案:

答案 0 :(得分:3)

也许是这样的:

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."   

一位发烧友的正则表达式可能会排除前期,或者您可以在第二步中删除它们。

答案 1 :(得分:0)

将数据集名称视为df,将列视为名称。新列名称将为标题。

df$Title <- gsub('(.*, )|(\\..*)', '', df$Name)