我正在处理大约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
包,增强data.frame
R中的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
与[<-