根据公共列名合并两个数据框

Merge two dataframes based on common column names

我有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 上的列,即 "name" 和 "gender"。但是在我的工作中,我有很多基因,所以我不能一个基因一个基因地做。

谢谢!

我们可以在 'df1' 和 'df2' 的列名上使用 intersect 到 select 'df1'

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

或者用dplyr

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