我想从现有的数据框中生成一个新的数据框,其中根据该变量是否在单独的向量中列出(即作为行)来选择该新 df 中的列。因此,新的 df 将仅包含向量中列出的那些列。为了提高效率,我想这样做而不必手动指示这些列。
我的直觉是,这是一个非常简单的操作,但对于 R 来说,我不太确定如何解决这个问题。
我今天刚用过这个(以及在另一个答案中)。
如果你想创建一个串联列表:
matchingList <- c("a", "b", "b")
Run Code Online (Sandbox Code Playgroud)
df并且您有一个具有一些相同列名的数据框,那么您可以像这样对它进行子集化:
newDF <- df[, which((names(df) %in% matchingList)==TRUE)]
Run Code Online (Sandbox Code Playgroud)
如果您从左到右阅读英文版并附有说明,则代码显示:
newDF<-df[,(行位于逗号之前和括号之后的空间中)which((names(df)%in% matchingList)==TRUE)它仅对两个列表中都存在的字段进行子集化,并返回逻辑值 TRUE 以满足比较两个列表的which 语句。
还有更简单的方法,但这种方法允许您广泛更改 df 和匹配列表,而不必重新设置过滤器。