首页 > 解决方案 > 查找 NA 介于 0 和 1 之间的行

问题描述

我想识别包含 NA 并且介于零和一之间的行。考虑这个data.table:

DT <- data.table(a = c(0, NA, NA, 0, NA, 1, 1, NA, 0, NA, 1, NA, NA, NA, 0, 1, 1, 0, NA, 0))

# DT
# a
# 1:  0
# 2: NA
# 3: NA
# 4:  0
# 5: NA
# 6:  1
# 7:  1
# 8: NA
# 9:  0
# 10: NA
# 11:  1
# 12: NA
# 13: NA
# 14: NA
# 15:  0
# 16:  1
# 17:  1
# 18:  0
# 19: NA
# 20:  0

如何识别行号 5、8、10 和 12:14?

标签: rindexingdata.table

解决方案


您可以尝试使用approx

DT[,b := approx((1:.N)[!is.na(a)],na.omit(a),1:.N)$y]

然后申请

DT[, which(is.na(a) & b>0 & b<1)]

或者

DT[, which(is.na(a) & between(b, 0, 1, FALSE))]

这使

[1]  5  8 10 12 13 14

推荐阅读