1) Использование inner_join
:
library(dplyr)
# test data
v <- paste0("var", 1:4)
DF1 <- as.data.frame(t(outer(v, 1:3, paste, sep = "-")), stringsAsFactors = FALSE)
DF2 <- as.data.frame(t(outer(v, 2:4, paste, sep = "-")), stringsAsFactors = FALSE)
DF1 %>% inner_join(DF2)
дает:
Joining, by = c("V1", "V2", "V3", "V4")
# A tibble: 2 x 4
V1 V2 V3 V4
<chr> <chr> <chr> <chr>
1 var1-2 var2-2 var3-2 var4-2
2 var1-3 var2-3 var3-3 var4-3
2) В базе R мы можем использовать merge
:
merge(DF1, DF2)
или intersect
intersect(DF1, DF2)
3) В дБплыр:
library(dbplyr)
# set up backend using DF1 and DF2 from (1)
con <- DBI::dbConnect(RSQLite::SQLite(), path = ":memory:")
copy_to(con, DF1, "DF1")
copy_to(con, DF2, "DF2")
DF1_db <- tbl(con, "DF1")
DF2_db <- tbl(con, "DF2")
DF1_db %>% inner_join(DF2_db)
дает:
Joining, by = c("V1", "V2", "V3", "V4")
# Source: lazy query [?? x 4]
# Database: sqlite 3.19.3 []
V1 V2 V3 V4
<chr> <chr> <chr> <chr>
1 var1-2 var2-2 var3-2 var4-2
2 var1-3 var2-3 var3-3 var4-3
Если у вас есть таблица и таблица базы данных, вам необходимо либо скопировать таблицу в базу данных, используя copy_to
, либо захватить таблицу базы данных в R. inner_join
не может смешивать источники.