【问题标题】:OpenRefine, how to merge row X values based on row Y unique valueOpenRefine,如何根据行 Y 唯一值合并行 X 值
【发布时间】:2022-01-14 16:20:33
【问题描述】:

在 OpenRefine 中,我该怎么做:

ID    criteria  
=====.============
40006 John Doe|1985-05-15
50008 John Doe|1985-05-15  
23012 John Doe|1985-05-15
90001 Ferry Hart|1978-09-23
 9031 Ferry Hart|1978-09-23

到这里:

ID's                criteria
===================.=================== 
40006, 50008, 23012 John Doe|1985-05-15
90001, 9031         Ferry Hart|1978-09-23

This 看起来是正确的答案。消隐确实会产生这种情况:

ID    criteria  
=====.============
40006 John Doe|1985-05-15
50008 
23012
90001 Ferry Hart|1978-09-23
 9031

但在 ID 上加入多值单元格 似乎不起作用。这可能是因为我所有的行也是记录。

有什么建议吗?

【问题讨论】:

  • 这个问题已经有了答案here

标签: openrefine


【解决方案1】:

问题的症结在于,您可以通过将不同行集(即在All 列中具有自己唯一序列号的行)转换为记录,方法是将当且仅当您正在空白的列位于开头。

(假设“一条记录”是带有序列号的行加上它下面没有序列号的一些行,属于该记录。)

以下内容源自this,感谢magdmartin。步骤如下。

  1. 确保条件列已修剪并且您处于行模式

  2. 条件 -> 编辑列 -> 将列移到开头。

  3. 标准 -> 编辑单元格 -> 空白。这会将行集转换为记录。

  4. 切换到录制模式。您现在将看到记录:只有具有条件的行才有序列号。

  5. ID -> 根据此列添加列,输入此GREL:

    forEach(row.record.cells['ID'].value,v,v).join('|')

    这将创建所需的字段内容。你也可以把它删掉。

  6. criteria -> Facet -> Customized Facet -> Facet by blank(null 或空字符串)

  7. All -> Facet -> Facet by blanks 只选择空行

  8. 全部 -> 编辑行 -> 删除匹配的行

  9. 在左侧的 Facet 框中,选择剩余的行。

耶!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 2020-03-16
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多