两个相关的问题:

编辑:PS。我正在寻找基于data.table的解决方案。

1.如何为所有列选择高于特定阈值的data.table行?

2.如何选择data.table列中包含高于某个阈值的值?

可重现的示例:

library(data.table)
dt <- data.table(V1=1:5, V2=3:7, V3=7:3)


有条件地选择所有行

# this line selects rows based on column `V1`.
  dt[ V1 > 2, ]

# I'm looking for a way to select rows based on values of all columns. My failed attempt
  dt[ names(dt) > 2, ]

# *expected output*: a data.table with all columns but only with those rows where all values are `> 2`

#> V1 V2 V3
#> 3  5  5
#> 4  6  4
#> 5  7  3


有条件地选择所有列

# My failed attempt
  dt[, .SD, .SDcols > 2 ]

# *expected output*: a data.table with all rows but only with those columns where all values are `> 2`

#>   V2 V3
#>   3  7
#>   4  6
#>   5  5
#>   6  4
#>   7  3

最佳答案

为了获取所有列,但仅获取所有值均优于阈值的行,最好的方法是使用经典过滤如下:

dt[rowMeans(dt>threshold)==1,]


要获取所有行,但仅获取所有值均高于阈值的列,可以执行以下操作:

dt[,colMeans(dt>threshold)==1, with=F]

关于r - 选择所有列|基于条件的data.table的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37541728/

10-12 17:52