Open Refine- создать новый столбец, просматривая значения из пары столбцов
У меня есть таблица в OpenRefine с столбцами A, B и C, например:
A | B | C | D
---|---|---|---
a | 1 | b | 2
b | 2 | |
c | 3 | a | 1
d | 4 | c | 3
Я хочу создать столбец D, выбирая значения из B, соответствующие значениям в C, используя A в качестве индекса. Надеюсь, что имеет смысл? Мне не повезло, когда я понял, как это сделать в GREL.
1 ответ
Вы можете использовать функцию 'cross' для поиска значений по всему проекту. Крест обычно используется для поиска значений в другом проекте / файле OpenRefine, но на самом деле он работает так же, если вы указываете на тот же проект, в котором вы уже находитесь.
Итак, из Col C вы можете использовать "Добавить новый столбец на основе этого столбца" с GREL:
cell.cross("Your project name","Col A")
Вы получите массив "строк" - и если одно и то же значение появится в столбце А несколько раз, вы можете получить несколько строк.
Чтобы извлечь значение из массива, вы можете использовать что-то вроде:
forEach(cell.cross("Your project name","Col A"),r,r.cells["Col B"].value).join("|")
Заключительное 'соединение' необходимо для преобразования массива в строку, которая необходима для возможности сохранения результата (массивы не могут быть сохранены напрямую)