如何在R中使用模糊匹配连接数据?

如何在R中使用模糊匹配连接数据?,r,fuzzy-search,R,Fuzzy Search,我有一些主题和许可证数据,希望创建一个列,根据列出的主题标记许可证是否合适。另一个挑战是,一些教师教授多个科目,用分号分隔,每个许可证有几个可接受的科目 我想我需要合并一些类似grep的东西,但是我不太确定如何添加这个函数,同时还要连接两个表中的数据 示例代码 以下是我的数据框架的摘录: df1这里有一个带有tidyverse和fuzzyjoin的选项 这里有一个带有tidyverse和fuzzyjoin的选项 谢谢@akrun。当我将此代码合并到完整的数据集中时,会弹出一个错误,提示:订阅的分

我有一些主题和许可证数据,希望创建一个列,根据列出的主题标记许可证是否合适。另一个挑战是,一些教师教授多个科目,用分号分隔,每个许可证有几个可接受的科目

我想我需要合并一些类似grep的东西,但是我不太确定如何添加这个函数,同时还要连接两个表中的数据

示例代码

以下是我的数据框架的摘录:

df1这里有一个带有tidyverse和fuzzyjoin的选项

这里有一个带有tidyverse和fuzzyjoin的选项


谢谢@akrun。当我将此代码合并到完整的数据集中时,会弹出一个错误,提示:订阅的分配中不允许使用NAs。有没有办法解决NAs问题,因为我仍然希望看到那些没有许可证的老师被列出来?很抱歉没有将NAs合并到我的示例中-在运行此代码之前我没有考虑过它@K.C.可能您通过使用is.NA删除NA来过滤数据集,然后使用该数据集进行加入。谢谢。理想情况下,我希望将NAs保留在数据集中,但出于我的目的,我可以进行此筛选。当我尝试时,你的代码成功了。谢谢@akrun。当我将此代码合并到完整的数据集中时,会弹出一个错误,提示:订阅的分配中不允许使用NAs。有没有办法解决NAs问题,因为我仍然希望看到那些没有许可证的老师被列出来?很抱歉没有将NAs合并到我的示例中-在运行此代码之前我没有考虑过它@K.C.可能您通过使用is.NA删除NA来过滤数据集,然后使用该数据集进行加入。谢谢。理想情况下,我希望将NAs保留在数据集中,但出于我的目的,我可以进行此筛选。当我尝试它时,你的代码起作用了。
library(fuzzyjoin)
library(tidyverse)
out <- df1 %>%
       rownames_to_column('rn') %>% 
       separate_rows(Subject, sep = ';') %>% 
       stringdist_left_join(
         enframe(lic.subject_index, name = 'Licensure', value = 'Subject') %>% 
              unnest) %>% 
       group_by(rn = as.integer(rn)) %>%
       summarise(ind = any(!is.na(Licensure.y))) %>%
       ungroup %>% 
       pull(ind) %>% 
       mutate(df1, flag = .)
out$flag
#[1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE
as.logical(ideal.df$flag)
#[1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE