【发布时间】:2020-01-06 04:07:18
【问题描述】:
基于我的问题here
我有一个数据集: 我想根据值范围保留列:子集列的所有值必须在 99 到 1000 之间。
var1 <- c(333, NA, 456)
var2 <- c(3, 10, 500)
var3 <- c(356, 813, 856)
var4 <- c("aaa", "bbb", "ccc")
var5 <- c(NA, 111, 989)
dataset <- data.frame(var1, var2, var3, var4, var5)
没有 NA 值也能正常工作
dataset %>%
select_if(~ is.numeric(.) && all(between(., 99, 1000)))
或
purrr::keep(dataset, ~is.numeric(.) && min(.) >= 99 && max(.) <= 1000)
但是当我在我的数据中引入 NA 时:
select_if 函数返回此错误:
"只有字符串可以转换为符号"
puur::keep 函数返回此错误:
"谓词函数必须返回单个 TRUE 或 FALSE,而不是缺失值"
如何管理 NA ?根据包含 alos NA 值的值范围选择列?
【问题讨论】:
-
您需要
NA值还是可以删除它们?将NAs 与其他值进行比较有点困难,将返回NA。我能想到的一种解决方案是将NA重新编码为0s,然后返回NA。这很糟糕,因为您可能还有其他0s 。 -
@NelsonGon。我想保留NA。如果 A reconde NA to 0 他们将超出范围......