基于行总和的子集列

use*_*668 1 syntax r subset

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

df 数据帧:

NE001  NE002  NE003  NE004
  2      0      0      2
Run Code Online (Sandbox Code Playgroud)

我的预期产量dfo:

NE001  NE004
 2       2
Run Code Online (Sandbox Code Playgroud)

我试过dfo <- df[,which(names(df) == colSums(df==2))]但不行.

一些想法?

Ric*_*ven 5

您是否只是尝试将总和为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
Run Code Online (Sandbox Code Playgroud)

由于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
Run Code Online (Sandbox Code Playgroud)