R:数据检查清单

数据挖掘 r 数据清理
2022-02-07 23:05:01

我是数据科学的新手,也是 R 的新手。我看到很多关于数据清理的资源(即 dplyr、tidyr、tidyverse),但在原始值验证方面却不多。我应该采用哪些“最佳实践”来验证原始值的准确性或在清理之前检测可能的编码错误?例如,有人告诉我应该确保 NA 是真正的 NA,或者在将数据导入 R 后确保数字或字符值前面没有空格。

提前致谢。

4个回答

更新了第二个资源

一般来说,据我所知,这是关于“数据质量”的问题。有很多手册,我喜欢这的建议——这可以说是语义级别:

SIX CORE DATA QUALITY DIMENSIONS
    COMPLETENESS 
    UNIQUENESS 
    TIMELINESS
    VALIDITY
    ACCURACY
    CONSISTENCY

M&E 属性:数据质量评估清单更为详细。

然后,当然,您应该更深入地了解语法级别。

正确或巧妙地替换 NA 值也称为“估算”,这可能是一个非常技术性的话题。请参阅 2011 年的这篇论文:MICE: Multivariate Imputation by Chained Equations in R

可在此处找到另一组近期材料:统计良好的“data.frame”处理器/调节器 • R 专家 Nina Zumel 和 John Mount 的 vtreat。

他们专注于为统计建模准备数据(这不同于为 ERP 系统或科学计算任务准备数据)。

在该页面上有指向技术论文的链接(例如arXiv:1611.09477 stat.AP)和从该页面链接的更短、更易读的文章,其中“[...] 展示了一些数据可能出错的事情,以及探索使用 R 统计语言解决这些问题的方法。”

  • 缺失值的处理

  • 新级别的处理(分类变量的新值)

  • 分类变量级别的显式编码

  • 处理具有大量水平的分类变量

  • 安全处理“宽数据”(具有非常多变量的数据)

  • 意外超出范围的数字输入的项圈/Winsorizing。

    还有很多

老实说,我认为我是一位经验丰富的中级 R 程序员,但我仍然在为这些问题苦苦挣扎。没有一个万能的清单,你可以通过划掉事情来解决。

一旦你有了数据,skimrskim包中的函数就非常方便了。您只需要确定数据是否正确读取或可能具有奇怪的值。

https://github.com/ropensci/skimr

要添加到列表中的另一个观点:

我的一个项目包括为期一年的每周节奏,在那里我得到了一组新的结构相似的输入文件。在这些输入文件上执行的过程相当冗长,并且问题的第一个症状可能需要几天才能爆发(从而失去几天的处理时间),因此尽早发现违反我的假设是相当重要的。

如果代码是我的,那么当我发现文件有问题时,我要做的第一件事就是提交问题/错误,编写测试以捕获生成错误,修复错误,然后继续。由于代码不是我的,我只能针对数据而不是代码进行测试

所以我testthat在我的输入文件上采用了 using 。(我确信其他单元测试也可以进行类似的调整。)由于每个文件的名称和结构对于测试来说都是静态的,所以它相当简单。此外,testthat它提供了良好的自动化机制,并以易于消化(如果需要,还可以详细)格式返回问题,以便快速识别问题。

预先设想其中一些测试并不难:类型(int、string、bool)、最小/最大大小(正好 1、不少于 10、不超过 52)和集合(只允许特定值)。虽然我可以想到一百万种可能导致数据出错的其他方式,但我无法防范(或检查)所有这些。所以我的模板从基础开始:类型、大小和集合。如果有明显的边界值(例如,总是非负的),那么我可以合并这些值,但在大多数情况下,这些默认值之后的任何测试都是为了防止我实际看到的(而不仅仅是想象的)失败。

(我不会讨论如何编写个人函数来将这些类型的测试应用于数据集,该网站的示例非常强大。)