我的数据集包含发件人的姓名和/或发件人的电子邮件地址。
sender_info = c('Kelvin [mailto:kelvin0354@gmail.com]','Kelvin','Sheryl [mailto:sheryl@hotmail.com]','Sheryl <sheryl@hotmail.com>','Oscar',)
我想检查唯一发件人的数量。从sender_info可以看出,有3个独特的发件人--Kelvin,Sheryl和Oscar。
我尝试了几种方法,但它们不起作用。其中之一涉及使用R RecordLinkage库中的levenshteinSim()函数来检查每个元素的相似程度。但是,当元素太不相同时,这种方法就失败了(例如,&#39; Kelvin [mailto:kelvin0354@gmail.com]&#39; Kelvin&#39;)。
如果有人能就如何解决这个问题给我一两个提示,我真的很感激。谢谢!
答案 0 :(得分:1)
如果您的数据结构总是与上述示例类似,则这些代码会有所帮助:
sender_info = c('Kelvin [mailto:kelvin0354@gmail.com]','Kelvin','Sheryl [mailto:sheryl@hotmail.com]','Sheryl <sheryl@hotmail.com>','Oscar')
new_sender <- sapply(strsplit(sender_info, split = " "), "[[", 1)
unique(new_sender)
#[1] "Kelvin" "Sheryl" "Oscar"
答案 1 :(得分:1)
“strsplit
的替代str_split
来自stringr
。
library(stringr)
unique(str_split(sender_info, pattern = " ", simplify = TRUE)[,1])
# [1] "Kelvin" "Sheryl" "Oscar"