通过来自第二数据帧的信息的一个数据帧(按名称)的子集列

时间:2018-05-30 13:48:07

标签: r dataframe subset

我希望得到以下问题的解决方案:我有以下示例数据框:

df1 = data_frame(Tom = c(1,2,3,4), Tina = c(5,6,7,8), Todd = c(9,10,11,12), Brit = c(1,2,3,4))

我有第二个数据框,其中包含有关Tom,Tina等的信息。

 df2 = data_frame(ID = c("Tom","Todd","Tina","Brit"), value = c(1,3,2,1))

现在我想从数据框df1中对colums进行子集化,如果" value"在df2中满足特定条件,例如df2 $ value = 1 | df2 $ value = 2 结果表应如下所示:

desired_result_look_like = data_frame(Tom = c(1,2,3,4), Tina = c(5,6,7,8), Brit = c(1,2,3,4))

谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

因为你在一个数据框中使用行值来选择另一个数据框中的列,所以解决方案并不是特别干净,但是如果你想坚持这种方法,你可以创建一个过滤器的第三个数据框根据您的条件设置第二个数据框,然后在第一个数据框中选择与过滤数据框中的值对应的列名称。代码看起来像这样:

library(dplyr)

df2_filtered <- df2 %>% filter(value == 1 | value == 2)
desired_result <- df1[ , colnames(df1) %in% df2_filtered$ID]

(这是假设在您发布的“期望结果”中,您打算包括Tina而不是Todd)