dplyr返回匹配的列而不是行

时间:2018-06-26 18:57:21

标签: r dplyr

所以我有两个看起来像这样的数据帧

Dataframe1
rsid      NA04015   NA16009   NA19117   NA16213 ...
rs2906360 0         0         1         0       ...
rs6936925 1         0         0         0       ...
rs####### 1         1         0         0       ...
...       ...       ...       ...       ...     ...

Dataframe2
rsid      NA04015   NA19117   ...
rs2906360 0.1332    -1.23     ...
rs4568525 0.47      0.252     ...
rs####### 1.43      0.232     ...
...       ...       ...       ... 

使用dplyr,我可以轻松地使用semi_join(Dataframe1, Dataframe2)来获取Dataframe1的版本,该版本仅包含与Dataframe2中的匹配rsids匹配的。但是我想返回一个dataframe1版本,该版本仅包含那些并且dataframe2中具有匹配的标头

所以我的结果看起来像这样:

Dataframe1_by_column
rsid      NA04015   NA19117   ...
rs2906360 0         1         ...
rs6936925 1         0         ...
rs####### 1         0         ...
...       ...       ...       ... 

在dplyr中是否可以使用一种简单的语法?

1 个答案:

答案 0 :(得分:0)

这行吗?

library(dplyr)

df1 <- data.frame(A="a", B="b", C="c", D="d")
df2 <- data.frame(A="a", D="d")

df1 <- df1 %>%
        select(one_of(names(df2)))