我在 OpenRefine 中有一个表,其中包含 A、B 和 C 列,如下所示:
A | B | C | D
---|---|---|---
a | 1 | b | 2
b | 2 | |
c | 3 | a | 1
d | 4 | c | 3
我想通过使用 A 作为索引从 B 中获取与 C 中的值相对应的值来创建列 D。希望这有意义吗?我没有太多运气弄清楚如何在 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 中获取与 C 中的值相对应的值来创建列 D。希望这有意义吗?我没有太多运气弄清楚如何在 GREL 中执行此操作。
您可以使用“交叉”功能在整个项目中查找值。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("|")
最后的“加入”是将数组转换为能够存储结果所需的字符串所必需的(数组不能直接存储)