2.1 基本概念
“脏”数据没有任何标准,只要是不能满足分析要求的数据集都将打上“脏”的标签。所以弄清楚与之相对的“干净”数据可以使我们更容易理解数据清理的概念。目前国际上公认的“干净”数据可以总结为如下3点。
1)属性相同的变量自成一列。
2)单一观测自成一行。
3)每个数据值必须独立存在。
表2-1中显示的数据不符合第一条原则,因为男、女都属于性别,所以可以归为一个变量,归为一个变量后如表2-2中所示。但表2-2中显示的数据不符合第三条原则,因为体重和年龄两个变量放在了同一列中,虽然用反斜杠分隔后,人类按常识很容易理解,但计算机并不会懂,其只会将两列本来是数字类型的数据当成是字符串来处理。表2-3中展示了一个三条原则都不满足的样本数据集,在完成清理之前,计算机无法对表2-3中的数据进行任何有效的数据分析。
表2-1 “脏”数据样本一
表2-2 “脏”数据样本二
表2-3 “脏”数据样本
表2-4中列出了清理后的数据集。对单一数据清理的第一个指导原则就是,按照上文介绍的三点将数据集清理成相应的形式。第二个原则需要按照实际需求进行,表2-5中的数据集是将“宽”数据(一般指多个同类或不同类型变量并存)转换成了“长”数据(同类型变量单独成列)。“宽”数据更符合人们日常对Excel格式数据的理解,而“长”数据对计算机来讲则更易进行数据存储和计算,在R环境中,计算长数据的速度优于“宽”数据。将表2-4中的数据转换成表2-5的形式只需一个函数gather,相关内容详见2.3节。
表2-4 “干净”数据样本一
表2-5 “干净”数据样本二
数据清理的第三个指导原则同样需要视情况而定,不同来源的数据应单独成表,独立存在。比如元数据(解释变量名称或数据背景的数据,英文为metadata)与原始应数据同时存在一个文件或一个工作表中(参考第1章不规则数据读取)。简单来说,元数据通常会包含坐标、指标的具体含义等解释性信息,这类信息不应与原始数据本身同时存在一个数据集中,而应单独成为一个数据集,只在需要解释原始数据本身时才调用元数据。