首页 > 解决方案 > R部分字符串匹配忽略空格全方位

问题描述

我遇到了部分字符串匹配的问题。我有成对的人,我需要比较他们的名字。为此,我在两个姓氏的两个方向上运行了一个charmatch,以查看 name1 是否是 name2 的一部分,反之亦然。我在下面有一个小数据集来演示这个问题。我在下面使用charmatch;我也使用过 pmatch 并且它返回相同的结果。

当charmatch 说为其第一个参数的元素在其第二个参数中寻找匹配时... 但这显然不是正在发生的事情,它看起来是特定于方向的。

那么......它是特定方向的吗?如果是这样……我还能用什么来做我所描述的事情?我的 EG 名称是双关语,实际上我遇到的是很多姓氏,其中丈夫有他的名字,妻子有她的 + 丈夫。我需要能够查看丈夫姓氏是否存在于妻子姓氏中。

我知道它可以用正则表达式来完成,但我不熟悉它们,可能应该是,但不是,所以我更喜欢不使用正则表达式的答案。

eg_data <- data.frame(name1 = c('Jimmy Conway', 'Jimmy'), 
name2 = c('Conway','Jimmy Conway'))

eg_data$share_name1 <- mapply(charmatch, eg_data$name1, eg_data$name2)
eg_data$share_name2 <- mapply(charmatch, eg_data$name2, eg_data$name1)
eg_data$share_name <- 0
eg_data$share_name [(eg_data$share_name1==1 | eg_data$share_name2==1)] 
<- 1

标签: rstringpattern-matchingstring-matching

解决方案


这可能很有用

> with(eg_data, intersect(name1, name2))
[1] "Jimmy Conway"

推荐阅读