gpt4 book ai didi

r - 如何更有效地检查错误值

转载 作者:行者123 更新时间:2023-12-04 11:16:26 24 4
gpt4 key购买 nike

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

提前致谢!


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

最佳答案

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

A 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 中的值快很多[<-

关于r - 如何更有效地检查错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34297418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com