【问题标题】:Transpose variable number of rows into columns in OpenRefine将可变数量的行转换为 OpenRefine 中的列
【发布时间】:2019-12-05 13:53:28
【问题描述】:

我有一个 xml 文件,其中包含图书馆目录中的记录。我已将其导入 OpenRefine,但所有值都在一列中。我想转置它,以便记录中的每个字段都有自己的列。然而,这很复杂,因为 a) 每个字段都是可选的,因此并非在所有记录中都存在 b) 许多字段是可重复的,因此可以在每条记录中出现多次。以下是数据的简化示例:

| RecordID | Tag  | Data               |
| 1        | 040a | CaABCD             |
| 1        | 245a | Go fish            |
| 1        | 245a | A guide to fish    |
| 1        | 246i | Fish series        |
| 1        | 260a | Fishing friends    | 
| 2        | 040a | CaABDC             |
| 2        | 245a | Happy trails       |
| 2        | 246i | Hiking series      | 
| 2        | 260i | The happy hiker    |
| 2        | 500a | Notes              |

我已经阅读了Openrefine - Transpose rows into columns based on text 的问答,但这个解决方案的问题是,如果我将所有值连接在一起,我将无法确定它们属于哪个字段,因为我的数据比该问题中的数据(我的实际数据有 25 多个字段和数千条记录)。

我能够更接近使用 Google 表格并使用计算字段制作数据透视表(如 PivotTable to show values, not sum of values - 请参阅最底部的答案)。但是,我仍然不知道如何处理重复字段。在数据透视表中,存在多个值,但仅显示第一个(双击单个单元格会显示一个列出所有值的详细信息表),因此当我复制粘贴表时,我会丢失其他值。我想连接它们,但在数据透视表中看不到这样做的方法。

你能想到我可以用 OpenRefine 还是其他工具来做这件事的任何其他方式?谢谢!

【问题讨论】:

    标签: openrefine


    【解决方案1】:

    在 OpenRefine 中解决此问题的经典方法是使用“Transpose -> Columnize by key value”。但这个功能是poorly documented,即使是 OpenRefine 开发人员也会感到头疼。在你的情况下,重复的字段会有问题,所以这里有一个可能的解决方案。

    1°转到“标签”列,点击“转置->按键值列”并使用以下配置(不要忘记“注释列(可选)”)

    结果会是这样(我的数据集和你的不完全一样,我修改了一个值来做一些测试)

    2°在新列“Record ID: 040 a”中,点击“编辑列->将列移到开头”。

    3° 如果要合并重复字段,请转到包含它们的每一列,然后通过选择分隔符单击“编辑单元格 -> 连接多值单元格”,例如“|”。

    最终结果将如下所示。

    要删除不必要的列:单击导出 -> 自定义表格导出并取消选择名称以 RecordId 开头的列。

    【讨论】:

    • 这成功了!非常感谢!我在这个网站上太新了,它甚至不会让我投票给你的答案 - 但我真的很感谢你的帮助。
    • 不客气。我认为你需要 15 分来支持一个答案,但你可以通过点击旁边的 V 来接受它 - 如果它是正确的并且是最好的。
    • 这里有这个函数的完整文档:docs.openrefine.org/operations/key_value_columnize.html
    【解决方案2】:

    OpenRefine 还有一个本地 MARC 导入器,如果您将来需要使用 MARC 数据,它可能值得一试。 MARCEdit 还内置了一些特定的 OpenRefine 支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 2021-07-29
      相关资源
      最近更新 更多