如何更有效地检查错误值

How to make checking values for errors more efficient

我正在处理大约 700 个大型数据集(每个数据集约有 80 个变量和多达 20 万行)。大多数变量只允许在一定范围内或为某些值。每个数据集中都有一些错误,其中的值不符合这些规则。

所以,我需要以某种方式找到这些错误并将它们设为 NA。目前我正在通过以下方式进行此操作:

library(data.table)
dataset$variable[!dataset$variable %in% c(1,2,3)] <- NA
# or
dataset$variable[!(dataset$variable >= 0 &
                   dataset$variable <= 150)] <- NA
... # for 80 variables

我的问题是应用这些规则需要一些时间(最多 10 秒),我想加快这个过程。您对如何提高效率有任何想法吗?或者这已经是最简单的方法了,我必须处理它?

在此先感谢您!


编辑:我想知道例如:遍历行而不是列会更快吗?

如果您正在寻找纯粹的性能,我建议您查看 data.table 包,它增强了 R 中的 data.frames。data.table 可以在适当的地方进行替换,以供参考(不复制)。当您在 R 中调用赋值操作 (<-) 时,我相信会生成数据副本,这会导致大型数据集速度变慢。

针对您的问题的 data.table 解决方案:

library(data.table)

# Cast as a data.table
dataset <- as.data.table(dataset)

# Do the replacement by reference with the := operation in data.table
# See ?`:=`
dataset[!variable %in% c(1,2,3), variable := NA]
dataset[variable >= 0 & variable <= 150, variable := NA]

这比用 [<-

替换常规 data.frame 中的值应该