我想从现有的数据框中生成一个新的数据框,其中根据该变量是否列在单独的向量中(即,作为行)来选择此新df中的列。因此,新的df只包含向量中列出的那些列。为了提高效率,我想这样做而不必手动指出这些列。
我的直觉是,这是一个非常简单的操作,但对于R我来说还是一个新手并不完全确定如何解决问题。
谢谢!
答案 0 :(得分:2)
我今天刚刚使用过这个(在SO上的另一个答案中)。
如果要创建连续列表:
matchingList<-c("a","b","b")
并且您有一个数据框df
,其中包含一些相同的列名,那么您可以像这样对其进行子集化:
newDF<- df[ ,which((names(df) %in% matchingList)==TRUE)]
如果你用英语从左到右阅读这些代码说明的话:
newDF
<-df[ ,
的所有行的子集(在逗号之前和括号之后的空间中生效的行)which((names(df)
%in% matchingList)
==TRUE)
它仅对两者中存在的字段进行子集,并返回逻辑值TRUE,以满足比较两个列表的语句。
有更简短的方法,但是这个方法允许你广泛地改变df和匹配列表,而不必重新调整过滤器。