Open Refine - 通过查找一对列中的值来创建新列

时间:2017-10-30 14:45:48

标签: openrefine grel

我在OpenRefine中有一个表,其中包含A,B和C列,如下所示:

A | B | C | D ---|---|---|--- a | 1 | b | 2 b | 2 | | c | 3 | a | 1 d | 4 | c | 3 我想通过从A中获取与B中的值相对应的值来创建列D,使用A作为索引。希望有道理吗?我没有太多运气,想知道如何在GREL中做到这一点。

1 个答案:

答案 0 :(得分:4)

您可以使用' cross'用于在整个项目中查找值。 Cross通常用于在不同的OpenRefine项目/文件中查找值,但实际上如果将其指向您已经在的同一项目,它的工作方式是相同的。

所以 - 从Col C,您可以使用"根据此列添加新列"与GREL:

cell.cross("Your project name","Col A")

你会得到一排排的'' - 如果多次在A列中出现相同的值,则可以获得多行。

要从数组中提取值,您可以使用以下内容:

forEach(cell.cross("Your project name","Col A"),r,r.cells["Col B"].value).join("|")

决赛'加入'有必要将数组转换为一个字符串,该字符串需要能够存储结果(数组不能直接存储)