Объединить два кадра данных на основе общих имен столбцов - PullRequest
0 голосов
/ 25 марта 2020

У меня есть 2 фрейма данных:

df1 (все гены и их значения экспрессии - имя каждого столбца является геном)

df2 (список генов для анализа - каждый ген имя столбца, без каких-либо дополнительных данных)

И в основном я хочу объединить их по именам столбцов, получив третий фрейм данных, df1, но только с генами, присутствующими в обоих фреймах данных (общие имена столбцов) .

Я не знаю, правильно ли я объяснил, но дайте мне знать, могу ли я предоставить больше информации.

Пример фреймов данных:

df1 <- data.frame(matrix(ncol = 4, nrow = 0))
x1 <- c("name", "school", "job", "gender")
colnames(df1) <- x1

df2 <- data.frame(matrix(ncol = 3, nrow = 0))
x2 <- c("name", "age", "gender")
colnames(df2) <- x2

В основном вот что Я хотел бы, чтобы df1 был уменьшен до столбцов, присутствующих как на df1, так и на df2, и это были бы «имя» и «пол». Но в моей работе у меня много генов, поэтому я не могу сделать это ген за геном.

Спасибо!

1 Ответ

0 голосов
/ 25 марта 2020

Мы можем использовать intersect в именах столбцов как 'df1', так и 'df2', чтобы выбрать столбцы 'df1'

df1new <- df1[intersect(names(df1), names(df2))]

или с помощью dplyr

library(dplyr)
df1new <- df1 %>%
            select(intersect(names(.), names(df2))
...