设置完整案例的阈值,以从R中的多个列中删除NA

设置完整案例的阈值,以从R中的多个列中删除NA,r,data.table,na,R,Data.table,Na,对此可能有一个简单的答案,但我无法让它起作用。我有一个如下所示的数据表: df <- data.table(t = c(1, 2, 3), a = c(NA, NA, 4), b = c(NA, 4, NA), c = c(NA, 4, NA)) df我们可以在“t”以外的列上使用行和 库(data.table) cols 0,] #t a b c #1:2 NA 4 #2:34NA 我们可以使用complete.cases和Reduce library(data.table) df[d

对此可能有一个简单的答案,但我无法让它起作用。我有一个如下所示的数据表:

df <- data.table(t = c(1, 2, 3), a = c(NA, NA, 4), b = c(NA, 4, NA), c = c(NA, 4, NA))

df我们可以在
“t”
以外的列上使用
行和

库(data.table)
cols 0,]
#t a b c
#1:2 NA 4
#2:34NA

我们可以使用
complete.cases
Reduce

library(data.table)
df[df[, Reduce(`|`, lapply(.SD, complete.cases)), .SDcols = a:c]]
#   t  a  b  c
#1: 2 NA  4  4
#2: 3  4 NA NA

是否与完成的速度一样快。具有大约5百万观测值的超大数据表的案例?
complete。案例
用于知道哪些行没有缺失值<代码>行和
速度非常快。非常感谢!接受你的答案,因为它完美地回答了这个问题,即使Ronak的另一个解决方案和rowSums也很有效。谢谢你们两位!
library(data.table)

cols <- which(names(df) != 't')
df[rowSums(!is.na(df[, ..cols])) > 0, ]

#   t  a  b  c
#1: 2 NA  4  4
#2: 3  4 NA NA
library(data.table)
df[df[, Reduce(`|`, lapply(.SD, complete.cases)), .SDcols = a:c]]
#   t  a  b  c
#1: 2 NA  4  4
#2: 3  4 NA NA