首页 > 解决方案 > 如何根据另一个数据框中存在的列过滤到新的数据框?

问题描述

所以我有两个数据框。

df1

   Date Bond2 Bond3 Bond5 Bond6 Bond7 Bond8 Bond10 Bond11 Bond12 Bond14 Bond15 Bond16 Bond17
1 41275    NA    NA    NA    NA    NA    NA     NA     NA     NA     NA     NA     NA     NA
2 41276    NA    NA    NA    NA    NA    NA     NA     NA     NA     NA     NA     NA     NA
3 41277    NA    NA    NA    NA    NA    NA     NA     NA     NA     NA     NA     NA     NA
4 41278    NA    NA    NA    NA    NA    NA     NA     NA     NA     NA     NA     NA     NA
5 41279    NA    NA    NA    NA    NA    NA     NA     NA     NA     NA     NA     NA     NA

df1

   Date Bond2 Bond3 Bond4 Bond5 Bond6 Bond7 Bond8 Bond10 Bond11 Bond12 Bond14 Bond16 Bond17 Bond19
1 41275    NA    NA    NA    NA    NA    NA    NA     NA     NA     NA     NA     NA     NA     NA
2 41276    NA    NA    NA    NA    NA    NA    NA     NA     NA     NA     NA     NA     NA     NA
3 41277    NA    NA    NA    NA    NA    NA    NA     NA     NA     NA     NA     NA     NA     NA
4 41278    NA    NA    NA    NA    NA    NA    NA     NA     NA     NA     NA     NA     NA     NA

我想创建一个新df3的,df1其中包含所有列df2,然后创建一个df4包含df2所有列的新df1

我一直在思考,filter(df1, names() %in% names(df2))select(names(df1) %in% names(df2)两者都不起作用。

谢谢

标签: rdplyr

解决方案


我们可以使用intersect来自 'df1'、'df2' 的列名,并使用它来对 df1、df2 中的列进行子集化以分别创建 df3、df4

nm1 <- intersect(names(df1), names(df2))
df3 <- df1[nm1]
df4 <- df2[nm1]

推荐阅读