【问题标题】:R workflow: How to handle hand-cleaning dataR 工作流程:如何处理手动清理数据
【发布时间】:2012-09-13 22:19:53
【问题描述】:

首先我要说的是,我努力避免手动清理数据,而使用正则表达式等。但是,有时这是不可避免的。

我通常使用类似Load-Clean-Func-Do 的工作流程,所以这显然适合清洁阶段。但是,如果需要更新,任何手动编辑都会破坏在手动清理之前运行这些内容的能力。

我能想到至少三种方法来处理这个问题:

  1. 尽早将手动更改放入工作流程中,以便之后的所有内容都可以运行。
  2. 为每一次更改写出正则表达式或赋值操作。
  3. 使用工具在您关闭已进行更改的电子表格后为您生成 (2)。

2 的问题在于它可能非常笨重。 3 的问题是我不知道 R 存在任何此类工具。Stata 对此有非常好的实现。

所以问题是:

  • 哪种代码可复制性最高,代码编写过程中的挫败感最少?
  • 是否存在 (3) 中的工具?

【问题讨论】:

  • 请注意,OpenRefine 的功能与 (3) 类似,但据我所知,它并未集成到 R 工作流程中。

标签: r


【解决方案1】:

我同意手清洁通常是一个相当糟糕的主意。然而,有时它是不可避免的。我建议两者之一,或两者兼而有之:

  1. 保留一个带有“数据修复”的单独数据文件,其中包含三个变量“case_id”、“variable_name”、“value”。使用它来存储有关原始数据中哪些值需要替换的信息。您可以在有关清理的额外信息中添加一些额外的变量(例如,为什么变量“variable_name”的值需要替换为“case_id”的“值”等)。然后有一小段 R 代码,它会加载您的原始数据,然后使用“修复”文件中的附加信息对其进行清理。

  2. 也许您应该开始使用一些版本控制系统,例如 git 或 subversion(还有其他 progs)。对数据的每一次手工更改都可以作为单独的提交记录在系统中。到一天结束时,您将能够轻松地查看日志,了解您对数据进行了哪些更改以及何时更改。此外,您将能够生成将原始数据文件转换为清理过的数据文件的补丁文件。对您的 R 代码文件进行版本控制也是有益的。

【讨论】:

  • 随着在 Github 中添加 CSV 预览功能,您的建议 #2 今天变得更加可行......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 1970-01-01
相关资源
最近更新 更多