《Using OpenRefine》翻译~13

上一篇:《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…). 你可以设置新列的列名,比如Dimension Measurement. 另外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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值