我想要处理数据帧中的复杂姓名和姓氏。
list <- c("DUPONT J", "DUPONT DE JEAN, V", "JEAN V Y","DE DUPONT Z V","DUPONT VAN RIVIERE Z")因此,我只想要完整的姓氏第一个字母
list2 <- c('DUPONT J', 'DUPONT DE JEAN V',"JEAN V","DE DUPONT Z","DUPONT VAN RIVIERE Z")我尝试使用str_extract函数,但在提取全名时遇到了名称中的"DE“或"VAN”问题。
str_extract(temp1$value, "[A-Z]+\\s[A-Z]")我认为正确的代码应该是: 1)确定第一个姓氏字母是什么;2)取第一个姓氏字母之前的所有内容。
发布于 2019-07-26 00:05:49
更简单的方法可能是查找字符串末尾的两个重复的单个字符,然后删除第二个字符
gsub("(\\s\\w)\\s\\w$", "\\1", list)输出还删除了逗号,这可以通过单独的命令来完成
gsub(",", "", gsub("(\\s\\w)\\s\\w$", "\\1", list))
[1] "DUPONT J" "DUPONT DE JEAN V" "JEAN V" "DE DUPONT Z" "DUPONT VAN RIVIERE Z"https://stackoverflow.com/questions/57199652
复制相似问题