在两个不同的向量上匹配相同的字符串

teo*_*ogj 2 r stringr dplyr

假设我们有两个不同的数据集:

数据集 A:

ids        name          price
1234       bread         1.5
245r7      butter        1.2
123984     red wine      5
43498      beer          1
235897     cream         1.8
Run Code Online (Sandbox Code Playgroud)

数据集 B:

ids          name       price
24908        lait       1
1234,089     pain       1.7
77289,43498  bière      1.5
245r7        beurre     1.4
Run Code Online (Sandbox Code Playgroud)

我的目标是匹配所有共享至少一个 ID 的产品,并将它们组合成一个新的数据集,如下所示:

id       a_name      b_name     a_price      b_price
1234     bread       pain       1.5          1.7
245r7    butter      beurre     1.2          1.4
43498    beer        bière      1            1.5
Run Code Online (Sandbox Code Playgroud)

这是否可行使用stringr或任何其他 R 包?

Ron*_*hah 5

您可以创建一个长数据集,separate_rows然后进行连接。

library(dplyr)
library(tidyr)

B %>%
  separate_rows(ids, sep = ',') %>%
  inner_join(A, by = 'ids')

#   ids   name.x price.x name.y price.y
#  <chr> <chr>    <dbl> <chr>    <dbl>
#1 1234  pain       1.7 bread      1.5
#2 43498 bière      1.5 beer       1  
#3 245r7 beurre     1.4 butter     1.2
Run Code Online (Sandbox Code Playgroud)