首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试单词是否在字符串中(grepl,fuzzyjoin?)

测试单词是否在字符串中(grepl,fuzzyjoin?)
EN

Stack Overflow用户
提问于 2021-06-07 13:58:32
回答 1查看 150关注 0票数 2

如果来自一个数据帧的两个列的字符串包含在来自第二个数据帧的列的字符串中,那么我需要对两个数据帧进行匹配和连接。

示例dataframe:

代码语言:javascript
复制
First <- c("john", "jane", "jimmy", "jerry", "matt", "tom", "peter", "leah")
Last  <- c("smith", "doe", "mcgee", "bishop", "gibbs", "dinnozo", "lane", "palmer")
Name  <- c("mr john smith","", "timothy t mcgee", "dinnozo tom", "jane  l doe", "jimmy mcgee", "leah elizabeth arthur palmer and co", "jerry bishop the cat")
ID    <- c("ID1", "ID2", "ID3", "ID4", "ID5", "ID6", "ID7", "ID8")

df1 <- data.frame(First, Last)
df2 <- data.frame(Name, ID)

因此,基本上,我有一个df1,它有相当有序的人名和姓氏;我有df2,它的名字可以组织为“名字,名字”,或者“姓名字”或者“名字MI姓”,或者其他完全包含名字的名字。我需要来自df2df2列。因此,我想运行一个代码来查看df1$First df2$Last是否在df2$Name字符串中,以及是否让它将df2$ID拉到df1中。

我的R导师告诉我使用来自fuzzyjoin包的fuzzyjoin

代码语言:javascript
复制
fzjoin <- fuzzy_left_join(df1, df2, by = c("First" = "Name"), match_fun = "contains")

但是它给了我一个错误,在这个论点是不合逻辑的;我不知道如何重写它来做我想做的事情;文档match_fun应该是TRUEFALSE,但我不知道该如何处理。而且,它只匹配df1$First,而不是df1$Firstdf1$Last。我想我可能能够使用格里普,但不确定如何基于我所见过的例子。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-07 14:12:43

文档指出,match_fun应该是一个“向量化函数,给出两列,返回TRUEFALSE,以确定它们是否匹配”。它不是真或假,它是一个返回TRUEFALSE的函数。如果我们切换您的订单,我们可以使用stringr::str_detect,它会根据需要返回TRUEFALSE

代码语言:javascript
复制
fuzzyjoin::fuzzy_left_join(
  df2, df1,
  by = c("Name" = "First", "Name" = "Last"),
  match_fun = stringr::str_detect
)
#                                  Name  ID First    Last
# 1                       mr john smith ID1  john   smith
# 2                                     ID2  <NA>    <NA>
# 3                     timothy t mcgee ID3  <NA>    <NA>
# 4                         dinnozo tom ID4   tom dinnozo
# 5                         jane  l doe ID5  jane     doe
# 6                         jimmy mcgee ID6 jimmy   mcgee
# 7 leah elizabeth arthur palmer and co ID7  leah  palmer
# 8                jerry bishop the cat ID8 jerry  bishop
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67873046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档