2

我在 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 中执行此操作。

4

1 回答 1

4

您可以使用“交叉”功能在整个项目中查找值。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("|")

最后的“加入”是将数组转换为能够存储结果所需的字符串所必需的(数组不能直接存储)

于 2017-10-30T16:03:32.510 回答