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