【问题标题】:Easiest way to merge rows in Google Refine (OpenRefine) if all columns are identical如果所有列都相同,则在 Google Refine (OpenRefine) 中合并行的最简单方法
【发布时间】:2014-01-16 13:33:56
【问题描述】:

我正在使用 OpenRefine(以前是 Google Refine)清理来自多个来源的数据。我有来自不同来源的包含公司的文件,列定义是相同的,即

统一标识 |姓名 |街道 |城市 |国家 |电话 | ... SG52D |公司a |一条街|一座城市| c国| 12345 SG52D |公司a |一条街|一座城市| c国| 0099835 dfnsd | B公司| B 街 | B市| c国| 33445 dfnsd | B公司|不一样 |另一个 | c国| 33445 xxbb3 | C公司| C街| B市| A 国 | 1111 xxbb3 | C公司| C街| B市| A 国 | 1111

我想要的是这个结果(只合并了最后一个公司,所有列都相同)

统一标识 |姓名 |街道 |城市 |国家 |电话 | ... SG52D |公司a |一条街|一座城市| c国| 12345 SG52D |公司a |一条街|一座城市| c国| 0099835 dfnsd | B公司| B 街 | B市| c国| 33445 dfnsd | B公司|不一样 |另一个 | c国| 33445 xxbb3 | C公司| C街| B市| A 国 | 1111

有没有简单的方法来做到这一点?

我知道我可以将所有列连接成一个新列,但这是一个小 PITA,因为列的数量。

也许有一种方法可以让新列定义循环遍历所有其他列并将其合并?

【问题讨论】:

标签: openrefine


【解决方案1】:

这是一种奇怪的方法,但这应该可行:http://googlerefine.blogspot.com/2011/08/remove-duplicate.html 确保将排序更改永久化。

【讨论】:

    【解决方案2】:

    您可以使用如下表达式创建新列:

    forEach(["UNID", "Name", "Street", "City", "..." ],x,cells[x].value).join("")
    

    【讨论】:

    • 感谢您提供此解决方案。这也是我想出的最好的方法,但这意味着我必须列出每一列,如果我有一个大工作表,这将是相当多的输入。我希望有类似 forEach(startcolumn, endcolumn).join() 但没有运气。
    猜你喜欢
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 2020-02-28
    相关资源
    最近更新 更多