gpt4 book ai didi

R:合并部分匹配的数据

转载 作者:行者123 更新时间:2023-12-02 16:06:48 31 4
gpt4 key购买 nike

我有 2 个数据框,我试图根据全部/部分匹配将它们合并在一起。这 2 个数据帧有一列具有匹配标识符 (ID2),但是其中一个数据帧中的某些行可以具有由“|”分隔的标识符组合符号。

2 个数据框结果的基本合并

df1 <- data.frame(
ID1 = c("A1", "A2", "A3", "A4", "A5"),
ID2 = c("B1|B2", "B1", "B3", "B6|B4", "B0|B6|B3")
)

df2 <- data.frame(
ID3 = c("C1", "C2", "C3", "C4", "C5"),
ID2 = c("B1", "B2", "B3", "B4", "B5")
)

merge(df1, df2, by = "ID2")
ID2 ID1 ID3
1 B1 A2 C1
2 B3 A3 C3

这会导致数据框只找到 2 个匹配项,但我还想找到诸如“B0|B6|B3”之类的行的匹配项,其中 B0 和 B6 不存在于第二个数据框中,但是 B3仍然是 2 个数据帧之间的匹配。

期望的输出看起来像这样:

  ID1      ID2   ID3
1 A1 B1|B2 C1|C2
2 A2 B1 C1
3 A3 B3 C3
4 A4 B6|B4 C4
5 A5 B0|B6|B3 C3

最佳答案

我们可以使用 fuzzyjoin 中的 regex_left_join

library(fuzzyjoin)
library(dplyr)
regex_left_join(df1, df2, by = "ID2") %>%
group_by(ID1, ID2 = ID2.x) %>%
summarise(ID3 = str_c(ID3, collapse="|"), .groups = 'drop')

-输出

# A tibble: 5 x 3
ID1 ID2 ID3
<chr> <chr> <chr>
1 A1 B1|B2 C1|C2
2 A2 B1 C1
3 A3 B3 C3
4 A4 B6|B4 C4
5 A5 B0|B6|B3 C3

关于R:合并部分匹配的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69224549/

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