gpt4 book ai didi

r - 模糊 LEFT 与 R 连接

转载 作者:行者123 更新时间:2023-12-05 01:13:02 26 4
gpt4 key购买 nike

library(tidyverse)
library(fuzzyjoin)

df1 <- tibble(col1 = c("apple", "banana", "carrot"),
col2 = as.numeric(0:2),
col3 = as.numeric(0:2))
#> # A tibble: 3 x 3
#> col1 col2 col3
#> <chr> <int> <int>
#> 1 apple 0 0
#> 2 banana 1 1
#> 3 carrot 2 2

df2 <- tibble(col4 = c("app", "carr"), col5 = c(5, 9), matched = rep(TRUE, 2))
#> # A tibble: 2 x 3
#> col4 col5 matched
#> <chr> <dbl> <lgl>
#> 1 app 5 TRUE
#> 2 carr 9 TRUE

我在 df1df2 上面有两个数据框。 我需要为 df1 创建一个新列,以告知每一行是否与 df2 中的条目匹配。

我还必须模糊匹配,并且模糊性需要不区分大小写(因此自定义 ci_str_detect 函数):

ci_str_detect <- function(x, y){str_detect(x, regex(y, ignore_case = TRUE))}

df1 %>%
fuzzy_inner_join(df2, by = c("col1" = "col4"), match_fun = ci_str_detect)
#># A tibble: 2 x 6
#> col1 col2 col3 col4 col5 matched
#> <chr> <dbl> <dbl> <chr> <dbl> <lgl>
#>1 apple 0 0 app 5 TRUE
#>2 carrot 2 2 carr 9 TRUE

不幸的是(在这种情况下)fuzzyjoin R 包似乎只执行内部联接,而不是我需要的左联接。

最终我需要这个输出:

#> # A tibble: 3 x 6
#> col1 col2 col3 col4 col5 matched
#> <chr> <dbl> <dbl> <chr> <dbl> <lgl>
#> 1 apple 0 0 app 5 TRUE
#> 2 banana 1 1 NA NA FALSE
#> 3 carrot 2 2 carr 9 TRUE

...和 ​​LEFT JOIN 将提供如下所示的中间数据框,我可以将 NA 替换为 FALSE 以获得我最终想要的(直接在上方) .

#> # A tibble: 3 x 6
#> col1 col2 col3 col4 col5 matched
#> <chr> <dbl> <dbl> <chr> <dbl> <lgl>
#> 1 apple 0 0 app 5 TRUE
#> 2 banana 1 1 NA NA NA
#> 3 carrot 2 2 carr 9 TRUE

我如何在 R 中模糊 LEFT 连接?

最佳答案

瞧:)

fuzzy_left_join(df1, df2, match_fun = ci_str_detect, by = c(col1 = "col4"))

关于r - 模糊 LEFT 与 R 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61000838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com