首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >regex_left_join (fuzzyjoin)没有按预期工作

regex_left_join (fuzzyjoin)没有按预期工作
EN

Stack Overflow用户
提问于 2022-08-03 15:40:12
回答 1查看 42关注 0票数 0

我试图根据一个表中的正则表达式在R中执行一个联接。据我所知,模糊连接包应该正是我所需要的,但我无法让它起作用。下面是我试图做的事情的一个例子:

代码语言:javascript
复制
library(tidyverse)
library(fuzzyjoin)

(typing_table <- tribble(
  ~typing,
  "DPB02:01",
  "DPB04:02"
)
)

(P_group_table <- tribble(
  ~P_group, ~Alleles,
  "DP1", "DPB01:01:01:01/DPB01:01:01:02/DPB01:01:01:03",
  "DP2", "DPB02:01:02:01/DPB02:01:02:02/DPB02:01:02:03",
  "DP3", "DPB03:01:01:01/DPB03:01:01:02/DPB03:01:01:03",
  "DP4", "DPB04:01:01:01/DPB04:01:01:02/DPB04:01:01:03"
)
 )

我试图通过搜索“等位基因”字符串中的“the”值将P_group_table加入到typing_table。我使用了以下表达式:

代码语言:javascript
复制
(typing_table %>% regex_left_join(P_group_table, by = c("typing" = "Alleles")))

结果是一个联接,但正确表中的值是空的。我想我一定是误解了regex_left_join表达式的语法,但我无法理解。我已经验证了可以使用以下代码将“the”值用作regex模式:

代码语言:javascript
复制
(typing_table_2 <- typing_table %>% slice_head)

(P_group_table %>% filter(str_detect(Alleles, typing_table_2$typing)))
EN

回答 1

Stack Overflow用户

发布于 2022-08-03 15:49:56

我们可以利用str_detect作为match_funfuzzy_.*_join中的应用

代码语言:javascript
复制
library(fuzzyjoin)
library(stringr)
fuzzy_right_join(P_group_table, typing_table, by = c("Alleles" = "typing"), 
       match_fun = str_detect)

或可能使用

代码语言:javascript
复制
regex_right_join(P_group_table, typing_table, by = c("Alleles" = "typing"))
# A tibble: 2 × 3
  P_group Alleles                                      typing  
  <chr>   <chr>                                        <chr>   
1 DP2     DPB02:01:02:01/DPB02:01:02:02/DPB02:01:02:03 DPB02:01
2 <NA>    <NA>                                         DPB04:02

请注意切换pattern时的差异

代码语言:javascript
复制
> str_detect("DPB02:01", "DPB02:01:02:01/DPB02:01:02:02/DPB02:01:02:03")
[1] FALSE
> str_detect("DPB02:01:02:01/DPB02:01:02:02/DPB02:01:02:03", "DPB02:01")
[1] TRUE

执行left_join的一个选项是在执行连接之前从'P_group_table‘获取子字符串

代码语言:javascript
复制
left_join(typing_table, P_group_table %>%
     mutate(typing = substr(Alleles, 1, 8)), by = "typing")
# A tibble: 2 × 3
  typing   P_group Alleles                                     
  <chr>    <chr>   <chr>                                       
1 DPB02:01 DP2     DPB02:01:02:01/DPB02:01:02:02/DPB02:01:02:03
2 DPB04:02 <NA>    <NA>          
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73224095

复制
相关文章

相似问题

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