Openrefine - 根据文本将行转换为列

时间:2017-09-29 13:27:50

标签: openrefine

我收到了图书馆目录中的数据转储,它以.txt格式显示。我已经能够将数据存入电子表格,但它只在一列中。我想把行转换成列。

数据按以下顺序排在这一列: 标题 文件类型 作者 日期

但在某些情况下,目录记录会显示在以下顺序中: 标题 文件类型 概要 作者 日期

因此,我无法根据行数将这些记录转换为列。

每个标题都有"描述"在它之前。这是整个数据集中的一个常规功能。

有没有办法使用OpenRefine根据列中的文本将行转换为列?要在包含"描述"的行之后转置x行。直到下一个单词"描述"?

1 个答案:

答案 0 :(得分:3)

我建议的方法是将您的行分组为OpenRefine'记录' - 我按照以下方式处理:

  • 将数据导入OpenRefine
  • 撰写自定义文字方面'使用GREL value.startsWith("Description")
  • 选择此构面显示的行' true' - 这应该为您提供包含标题的所有行
  • 仍然应用此方面选项,使用'根据此列添加列'添加一个仅包含标题的新列
  • 将此新列移至项目的开头(左手)
  • 切换到'记录'模式

现在,您应该看到对于与同一标题相关的每组行都有一个记录。您现在可以使用选项"加入多值单元格"获取标题,文档类型,概要(如果存在),作者和日期到单个单元格

现在使用'拆分成几列'跨列分割值

现在每个标题应该有一行。您仍然需要做一些工作,因为有行概要的行中的数据将与没有概要的行相比移过一行。要解决这个问题,我建议空白'在最后一列 - 非概要行在最后一列中应为空,因为只有少量数据。

然后,您可以使用转换逐个跨列移动值(从空列开始,否则您将覆盖数据)。

希望一切都有道理。如果您按照Ettore建议发布一些示例数据,那么我可以进行屏幕演示来说明

欧文