r - 查找 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?
解决方案
您可以尝试使用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
推荐阅读
- c# - 如何从另一个类显示到控制台列表?
- php - 从xml获取值标签
- windows - 如何以编程方式卸载 UWP 应用
- python - 从 Python 脚本将变量复制到 Jupyter 内核
- css - Rails - 如何使用 Cloudinary 从多个服务器获得相同的图像大小(分辨率)
- open-source - 为三星 Galaxy Tab A 构建的 AOSP
- node.js - 如何使用节点js中的关键字从文本文件中获取特定行
- angular - 如何在角度中使用 ContentChildren 访问嵌套元素
- angular - 在 Typescript 函数返回 true 后添加 CSS-Class
- c# - 使用 JsonTextReader 或任何其他替代方法从 json 中读取特定对象作为流