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("|")

Заключительное 'соединение' необходимо для преобразования массива в строку, которая необходима для возможности сохранения результата (массивы не могут быть сохранены напрямую)

Другие вопросы по тегам