R 有没有一种方法可以有效地将两个表与以列表格式存储的键连接起来
这里用一个代码示例来说明我的问题R 有没有一种方法可以有效地将两个表与以列表格式存储的键连接起来,r,list,join,dplyr,tibble,R,List,Join,Dplyr,Tibble,这里用一个代码示例来说明我的问题 table_A <- tibble(A1 = c("a", "a/b"), A2 = seq(1,2)) table_A <- table_A %>% mutate(A1 = str_split(A1, "/")) table_B <- tibble(A1 = c("a","b"), B1 = c("apple", &
table_A <- tibble(A1 = c("a", "a/b"), A2 = seq(1,2))
table_A <- table_A %>% mutate(A1 = str_split(A1, "/"))
table_B <- tibble(A1 = c("a","b"), B1 = c("apple", "bananas"))
#does not work
#left_join(table_A, table_B)
table\u A我们可以在执行联接之前unest
list
列
library(dplyr)
library(tidyr)
table_A %>%
unnest(A1) %>%
left_join(table_B)
-输出
# A tibble: 3 x 3
A1 A2 B1
<chr> <int> <chr>
1 a 1 apple
2 a 2 apple
3 b 2 bananas
A
数据表
选项
> rev(setDT(table_A)[, .(A1 = unlist(A1)), A2])[setDT(table_B), on = .(A1)]
A1 A2 B1
1: a 1 apple
2: a 2 apple
3: b 2 bananas
@阿克伦:谢谢你的回复,这就是我要找的 为了准确获得表C下的预期结果,我只需在您的建议中添加一行字:
library(dplyr)
library(tidyr)
table_A <- tibble(A1 = c("a", "a/b"), A2 = seq(1,2))
table_B <- tibble(A1 = c("a","b"), B1 = c("apple", "bananas"))
table_C <- table_A %>%
separate_rows(A1, sep="/") %>%
left_join(table_B) %>%
chop(c(A1,B1))
table_C
库(dplyr)
图书馆(tidyr)
表A%
印章(c(A1,B1))
表C
library(dplyr)
library(tidyr)
table_A <- tibble(A1 = c("a", "a/b"), A2 = seq(1,2))
table_B <- tibble(A1 = c("a","b"), B1 = c("apple", "bananas"))
table_C <- table_A %>%
separate_rows(A1, sep="/") %>%
left_join(table_B) %>%
chop(c(A1,B1))
table_C