整齐与不整齐的数据

数据挖掘 数据清理
2022-03-10 21:42:24

R for Data Science中,作者解释了他们对整洁数据的想法。他们为整洁的数据提供了一个示例:

#> # A tibble: 3 x 3
#>   country         `1999`     `2000`
#> * <chr>            <int>      <int>
#> 1 Afghanistan   19987071   20595360
#> 2 Brazil       172006362  174504898
#> 3 China       1272915272 1280428583

根据作者的说法,相同数据的整洁版本将是:

#> # A tibble: 6 x 3
#>   country     year  population
#>   <chr>       <chr>      <int>
#> 1 Afghanistan 1999    19987071
#> 2 Afghanistan 2000    20595360
#> 3 Brazil      1999   172006362
#> 4 Brazil      2000   174504898
#> 5 China       1999  1272915272
#> 6 China       2000  1280428583

我看到在杂乱无章的版本中,必须已经知道数据是人口,否则无法理解,什么19992000意思。但是,这可以从上下文中得出,例如,如果 tibble 存储在一个名为population.

现在,我有什么资格怀疑他们的判断——我不怀疑。但我想更好地理解他们的想法。第二个版本的实际优势是什么?我不能不直观地看到它们,例如,即使需要使用不同的功能,对于 AFAICS 两种情况,平均值等的计算都很容易。另一方面,我认为如果数据以“不整齐”的形式存储,那么计算两年人口之间的相关性会更容易。我的错误是什么?

1个回答

正如您所提到的,第一个示例是“杂乱”格式的数据,由于多种原因,这会使分析变得更加困难。第一个是列名,正如您提到的,您不知道列中的值实际代表什么。您提到这可以从上下文(例如变量名)派生,但如果数据最初存储在名为 的 csv 文件中data.txt怎么办?此外,如果您有另一种类型的值并且您也有 1999 年和 2000 年的数据,这将如何工作,您将如何命名这些列?使用整洁数据的第二个(可能也是最大的)优势是它允许更轻松和更标准化的分析。我认为原始论文中的以下内容很好地描述了它:

整洁的数据使分析师或计算机可以轻松提取所需的变量,因为它提供了一种构建数据集的标准方法。比较表 3 和表 1:在表 1 中,您需要使用不同的策略来提取不同的变量。这会减慢分析速度并引发错误。如果您考虑有多少数据分析操作涉及变量(每个聚合函数)中的所有值,您会看到以简单、标准的方式提取这些值是多么重要。整洁的数据特别适合像 R 这样的矢量化编程语言,因为布局确保来自同一观察的不同变量的值总是成对的。

论文的第 4 节和第 5 节提供了有关 tidy 格式如何与 R 中的现有函数一起使用以及如何应用它们的更深入的信息。