根据公共列名合并两个数据框
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))
我有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))