用R提取中间名

用R提取中间名,r,R,我是R语言的新手,我面临的问题是如何提取一个名字的中间名,比如 卡尔松,弗朗斯·奥洛夫先生 海宁,小姐。温德拉·玛丽亚 海斯,查尔斯·梅尔维尔夫人 这里,我想只选择名字中间的称呼,如MR或Mess等。告诉我怎么做。试试看 gsub(".*, +([^ ]+).*", "\\1", str1) #[1] "Mr." "Miss." "Mrs." 或者使用stru提取fromstringr library(stringr) str_extract(str1, perl("(?<

我是R语言的新手,我面临的问题是如何提取一个名字的中间名,比如

卡尔松,弗朗斯·奥洛夫先生
海宁,小姐。温德拉·玛丽亚
海斯,查尔斯·梅尔维尔夫人

<>这里,我想只选择名字中间的称呼,如MR或Mess等。告诉我怎么做。

试试看

 gsub(".*, +([^ ]+).*", "\\1", str1)
 #[1] "Mr."   "Miss." "Mrs." 
或者使用
stru提取
from
stringr

 library(stringr)
 str_extract(str1, perl("(?<=, )[^ ]+(?= +)"))
 #[1] "Mr."   "Miss." "Mrs." 
数据
str1如果所有名称都以中间名在最后的位置排列,则应该这样做:

 sapply( strsplit(str1, " "), tail, 1)
如果目标是识别敬语,那么我认为以列表为导向的方法会更好,你可以列举可接受的名称:“Mr”、“Mr.”、“Mrs”、“Mrs”、“Dr.”、“Dr.”、“Doctor”、“Prof”。然后你可以用浆糊(以“|”为分隔符)将它们绑在一起,并使用regexpr和regmatches进行提取

对于敬语问题,这是一种不太可靠的方法:

> str1 <- c('Carlsson, Mr. Frans Olof','Heininen, Miss. Wendla Maria',
            'Hays, Mrs. Charles Melville',"Feynmann, Prof. Richard", 
             "Livingstone, Dr. David")
> gsub("^(.+, )([Mrsi.PofD]+)( .+)", "\\2", str1)
[1] "Mr."   "Miss." "Mrs."  "Prof." "Dr."  
>str1 gsub(“^(+,)([Mrsi.PofD]+)(.+)”,“\\2”,str1)
[1] “先生”“小姐”“太太”“教授”“博士。”

你有什么具体的问题?到目前为止,你尝试过哪些不起作用的问题?如果它总是第二位,那么
vapply(strsplit(x,“”,“[`,”,2)
但是如果它不总是在那里,那么你会得到第一个名字。是的。如果OP改进了这个问题,那就太好了:)最近有很多令人兴奋的标题和令人失望的身体的问题。嘿,我想这是你的互联网。
 sapply( strsplit(str1, " "), tail, 1)
> str1 <- c('Carlsson, Mr. Frans Olof','Heininen, Miss. Wendla Maria',
            'Hays, Mrs. Charles Melville',"Feynmann, Prof. Richard", 
             "Livingstone, Dr. David")
> gsub("^(.+, )([Mrsi.PofD]+)( .+)", "\\2", str1)
[1] "Mr."   "Miss." "Mrs."  "Prof." "Dr."