我在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中做到这一点。
答案 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("|")
决赛'加入'有必要将数组转换为一个字符串,该字符串需要能够存储结果(数组不能直接存储)