两个相关的问题:
编辑: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/