R - 比较相似但不相同的字符串

时间:2017-07-04 03:13:46

标签: r

我的数据集包含发件人的姓名和/或发件人的电子邮件地址。

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;)。

如果有人能就如何解决这个问题给我一两个提示,我真的很感激。谢谢!

2 个答案:

答案 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"