R:"过滤"列表中的数据框中的列

时间:2017-01-25 23:42:31

标签: r subset

我想从现有的数据框中生成一个新的数据框,其中根据该变量是否列在单独的向量中(即,作为行)来选择此新df中的列。因此,新的df只包含向量中列出的那些列。为了提高效率,我想这样做而不必手动指出这些列。

我的直觉是,这是一个非常简单的操作,但对于R我来说还是一个新手并不完全确定如何解决问题。

谢谢!

1 个答案:

答案 0 :(得分:2)

我今天刚刚使用过这个(在SO上的另一个答案中)。

如果要创建连续列表:

matchingList<-c("a","b","b")

并且您有一个数据框df,其中包含一些相同的列名,那么您可以像这样对其进行子集化:

newDF<- df[ ,which((names(df) %in% matchingList)==TRUE)]

如果你用英语从左到右阅读这些代码说明的话:

  • 创建名为newDF
  • 的新数据框
  • 将newDF设置为等于数据框<-df[ ,的所有行的子集(在逗号之前和括号之后的空间中生效的行)
  • 其中列名称为which((names(df)
  • 与列出%in% matchingList)
  • 的匹配名称进行比较时
  • 返回值true ==TRUE)

它仅对两者中存在的字段进行子集,并返回逻辑值TRUE,以满足比较两个列表的语句。

有更简短的方法,但是这个方法允许你广泛地改变df和匹配列表,而不必重新调整过滤器。