《Using OpenRefine》翻译~13

来源:互联网 发布:恶灵附身优化怎么样 编辑:程序博客网 时间:2024/06/05 15:50

上一篇:《Using OpenRefine》翻译~12

7:行列转换

有时候数据并不是以你料想的方式在行和列中分布。确实,有很多种数据排布方式,这取决于具体的情况。比如在Powerhouse Museum数据集中,有一些很多维度的列:Height, Width, Depth, Diameter和Weight.但是,并不是所有这些列中都有数据,所以如果按照这种方式排布耗时耗力。一个替代方法是将这5列转换成2列:一列包含维度名称(比如Height 或 Weight),另一列包含量度值(比如35mm 或 2kg)

这里我们想做的就是将这些列转换成行。为了做到这点,点击Height 列下拉菜单: Transpose | Transpose cells across columns into rows…,会弹出如下对话框:


左侧From Column栏中选择需要转换的开始列,Height列已经被选中是因为我们就是点击这一列开始操作的。To Column 栏选择停止转换的列。这两列中间的所有列就是需要转换的列(所以你需要首先将这些列放在一起).这里我们选择Weight,所以这两列及其中间的列将会被转换。

右侧,我们可以选择转换列中的变化内容。Two new columns栏有两项设置, Key column包含的是原来列的名称 (Height, Weight…),Value column包含的是原来的值(35mm, 2kg…). 你可以设置新列的列名,比如DimensionMeasurement. 另外One column栏可以将名称和值都放到一个单元格中,但是这样做后续分析可能比较麻烦。当所有设置项设置好后,点击Transpose开始转换。5列数据将转换成2列,如下所示:


请注意,这里OpenRefine需要设置成records模式以保证信息关联。所以,如过某行有不同的量度信息,那么转换后它们会占据多行。可能你希望能够看到所有5个值,即使有些是空值。那么你可以选择在转换对话框中去掉Ignore blank cells勾选。

我们还可以通过执行Transpose |Columnize by key/value columns…来实现反向转换。但是,这个操作对于空单元格十分敏感,所以必须小心。你可能已经能够将Provenance列(名称/值配对出现)转换成全列格式。

 

小结

本章介绍了一些高级的数据操作。对于多值单元格我们有很多处理方法:当它们的值属于同一类型的话,我们可以将它们分割成多行;当它们意义不同的话,我们可以将它们分割成多列。另外我们也学习了OpenRefine中的一种特殊模式:records模式。在records模式下,属于同一主体的多个行被认为是一个整体,这样就能让我们进行更高效的操作。

我们也介绍了聚类,这在单元格值本身含义一样但是拼写不同时非常有用。你甚至可以定义自己的转换操作,或者基于已存在的列创建新列。最后,我们学习了如何进行合适的行列转换。总的来说,本章介绍了OpenRefine的高级操作,这些操作隐藏在简单的界面下面。到现在为止,你基本可以称得上是OpenRefine高手了。


下一篇:《Using OpenRefine》翻译~14

原创粉丝点击