我有一个名单的形式" 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;
答案 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)