【问题标题】:Subset columns based on sum of rows基于行总和的子集列
【发布时间】:2014-08-02 15:18:15
【问题描述】:

我想根据行的总和对 df 列进行子集化。

df 数据框:

NE001  NE002  NE003  NE004
  2      0      0      2

我的预期输出dfo:

NE001  NE004
 2       2

我尝试了dfo <- df[,which(names(df) == colSums(df==2))],但没有用。

一些想法?

【问题讨论】:

  • 我不太了解问题/逻辑;您正在将数字与字符串进行比较。为什么第一列和第四列要在这里匹配?
  • 在这个df 示例中,我们只有一行。然后每个列的行总和可以是0 或2。我想对行总和为 = 2 的列进行子集化。

标签: r syntax subset


【解决方案1】:

您只是想对总和为 2 的列进行子集化吗?如果是这样,你就很接近了。这是一个带有小数据框的示例。

(d <- data.frame(x = c(2, 0), y = c(1, 2), z = c(1, 1)))
#   x y z
# 1 2 1 1
# 2 0 2 1

由于colSums(d) == 2 返回一个逻辑向量,我们可以将其作为子集,并且将返回TRUE 的列

colSums(d) == 2
#    x     y     z 
# TRUE FALSE  TRUE 
d[colSums(d) == 2]
#   x z
# 1 2 1
# 2 0 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多