【发布时间】:2014-07-31 18:13:11
【问题描述】:
我正在尝试在 data.table 对象中验证哪些列的非空数据(不是 NA)值大于某个阈值(例如:5),然后丢弃未传入的列标准。
考虑以下数据:
require(data.table)
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,NA,6), v=c(1,2,NA,NA,NA,NA,NA,8,9))
DT
x y v
1: a 1 1
2: a NA 2
3: a 6 NA
4: b 1 NA
5: b NA NA
6: b 6 NA
7: c 1 NA
8: c NA 8
9: c 6 9
在上面的例子中,列 v 只有 4 个非 NA 值,小于 5,所以我想丢弃该列:
DT[,c(3) := NULL]
DT
x y
1: a 1
2: a NA
3: a 6
4: b 1
5: b NA
6: b 6
7: c 1
8: c NA
9: c 6
我需要帮助来了解如何将 .N* 符号和“if 语句”与 data.table 结合以检查具有多列的对象。
我的问题是,我怎样才能以编程方式在所有列中进行计数,并且只丢弃未通过标准的那些?谢了。
*我不确定是否需要.N,但从之前的研究中我了解到这个符号用于对 data.table 对象进行计数
【问题讨论】:
标签: r if-statement data.table na