如何使用列名对数据框列进行子集化? [复制]

Posted

技术标签:

【中文标题】如何使用列名对数据框列进行子集化? [复制]【英文标题】:How to subset a Data frame column wise using column names? [duplicate] 【发布时间】:2018-02-01 10:25:47 【问题描述】:

我创建了一个名为 z数据框

  a = c(1,1,1);
  b = c(2,2,2);
  c = c(3,3,3);
  d = c(4,4,4);
  z = data.frame(a,b,c,d);

我想从数据框 z 中删除列 c 和 d

我试过这段代码

p = subset(z , colnames(z) == c('a' , 'b'))

但我得到了这个结果

a   b   c   d
1   2   3   4   
1   2   3   4 

我应该在此命令中进行哪些更改以从 z 中删除列 cd

【问题讨论】:

z[, c('a', 'b')] 或参数select:subset(z, select = c('a' , 'b'))。顺便说一句,为什么说明末尾有分号? R 不是 C 语言,分号分隔指令,所以当你用它结束一个指令行时,你实际上是把它和最后的 NULL 指令分开。 @ycw 已更新 :-) 【参考方案1】:

我们可以使用以下来指定按名称选择哪些列。

z[, c("a", "b")]

这也有效。

z[c("a", "b")]

或者我们可以使用下面的方法首先指定要删除向量中的哪些列,然后选择不在该向量中的列。

cols_remove <- c("c", "d")
z[, !(colnames(z) %in% cols_remove)]

【讨论】:

保持 @Sateesh 您的评论不清楚。它是不可重现的。你想达到什么目标? @Sateesh 这是 R 代码吗? @Sateesh 你还没有回答我的问题。你发表评论的目的是什么?你的代码真的可以在 R 中运行吗? 是的,它有效...

以上是关于如何使用列名对数据框列进行子集化? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用左连接的情况下根据“OR”条件对数据框进行子集化? [复制]

基于变量列名的子集

如何使用“OR”组合多个条件以对数据框进行子集化?

如何使用每组的行数作为条件对数据框进行子集化

如何对 SparkR 数据框进行子集化

如何根据应用于大量列的“不等于”标准对数据框进行子集化?