13

首先让我说,我刻意避免手动清理数据,而是使用正则表达式等。然而,偶尔也是不可避免的。

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

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

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

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

所以问题是:

  • 哪个导致最可复制的代码和最不令人沮丧的代码编写?
  • (3) 中的工具是否存在?
4

1 回答 1

8

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

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

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

于 2012-09-30T20:58:17.327 回答