我有一个如下所示的数据表:
library(data.table)
cols <- c("A", "B", "C")
dt <- data.table(A = c(NA,10,20,15),
B = c(30,10,5,15),
C = c(40,10,NA,15),
TOTAL = c(75,30,30,45))
A B C TOTAL
1: NA 30 40 75
2: 10 10 10 30
3: 20 5 NA 30
4: 15 15 15 45
我想 Select 所有行,其中A
、B
和C
只缺少一个值,而TOTAL
的值可用.所以在这种情况下,这将是行号1和3.为了保持它更一般,我想使用字符向量cols
.
我试着做到了以下几点:
dt[!is.na(TOTAL), rowSums(is.na(.SD)) == 1, .SDcols = cols]
但理想情况下,我希望在中设置行的子集,如下所示:
A B C TOTAL
1: NA 30 40 75
2: 20 5 NA 30
然后将j中的Nas计算为总减go 可用列:
A B C TOTAL
1: 5 30 40 75
2: 20 5 5 30
有谁有办法实现这一点吗?