0

我有一列形式为“霍布斯,杰克先生”的名称,即姓氏、头衔。名。头衔有4种类型——“先生”、“夫人”、“小姐”、“大师”。如何搜索列中的每个项目并返回标题,我可以将其存储在另一列中?

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

所需的输出 - 带有值的列“标题” -("Mr","Master", "Mrs",.....)

我尝试过这样的事情:

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

没有成功>.<

4

2 回答 2

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

更高级的正则表达式可能会预先排除句点,或者您可以在第二步中删除它们。

于 2015-12-04T23:28:06.877 回答
0

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

df$Title <- gsub('(.*, )|(\\..*)', '', df$Name)
于 2017-12-12T07:06:09.560 回答