当前位置:  开发笔记 > 编程语言 > 正文

如何更有效地检查错误的值

如何解决《如何更有效地检查错误的值》经验,为你挑选了1个好方法。

我正在处理大约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秒),我想加快这个过程.您有任何想法如何提高效率吗?或者这是最简单的方法,我必须处理它?

非常感谢你提前!


编辑:我想知道例如:迭代行而不是列更快吗?



1> ialm..:

如果您正在寻找纯粹的性能,我建议您查看data.table包,增强data.frameR中的s 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[<-

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有