如果所有列都相同,则在Google Refine(OpenRefine)中合并行的最简单方法

时间:2014-01-16 13:33:56

标签: openrefine

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

UNID  | Name      | Street    | City    | Country   | Phone | ...
sg52d | Company a | A street  | a city  | c country | 12345
sg52d | Company a | A street  | a city  | c country | 0099835
dfnsd | Company B | B Street  | City B  | c country | 33445
dfnsd | Company B | Different | Another | c country | 33445
xxbb3 | Company C | C Street  | City B  | Country A | 1111
xxbb3 | Company C | C Street  | City B  | Country A | 1111

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

UNID  | Name      | Street    | City    | Country   | Phone | ...
sg52d | Company a | A street  | a city  | c country | 12345
sg52d | Company a | A street  | a city  | c country | 0099835
dfnsd | Company B | B Street  | City B  | c country | 33445
dfnsd | Company B | Different | Another | c country | 33445
xxbb3 | Company C | C Street  | City B  | Country A | 1111

有一种简单的方法吗?

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

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

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

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