Получить общие значения между 5 из одного столбца разных фреймов данных - PullRequest
1 голос
/ 06 апреля 2020

Я изо всех сил пытаюсь извлечь общие значения между указанным c столбцом 5 различных фреймов данных. Я знаю, как сделать это с двумя, но не с более.

df1$ID<-c(121, 122, 176)
df2$ID<-c(121, 88, 199)
df3$ID<-c(77, 121, 230)
df4$ID<-c(6, 88, 121)
df5$ID<-c(121, 122, 123)

В этом примере мой желаемый результат будет:

result<-c(121)

Спасибо!

1 Ответ

3 голосов
/ 06 апреля 2020

Мы можем получить все наборы данных в list и затем использовать intersect

Reduce(intersect, lapply(mget(paste0('df', 1:5)), `[[`, 'ID'))
#[1] 121

Или используя purrr

library(purrr)
library(stringr)
library(dplyr)
mget(paste0('df', 1:5)) %>%
    map(~ .x %>%
              pull(ID)) %>%
    reduce(intersect)
#[1] 121

data

df1 <- data.frame(ID = c(121, 122, 176))
df2 <- data.frame(ID = c(121, 88, 199))
df3 <- data.frame(ID = c(77, 121, 230))
df4 <- data.frame(ID = c(6, 88, 121))
df5 <- data.frame(ID = c(121, 122, 123))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...