Можно ли добавить столбец на основе ключевых слов в существующий столбец?

В общем, вот что я пытаюсь сделать: проанализировать строку в одной ячейке электронной таблицы, а затем добавить ключевые слова в другую ячейку в этой строке, если в проанализированной ячейке обнаружены определенные ключевые слова.

Я использую OpenRefine (технически Google Refine 2.5), чтобы попытаться сделать это, используя функцию «Добавить столбец на основе этого столбца», и мне еще ничего не удалось отобразить в новом столбце.

Вот текущая итерация выражения GREL, с которым я работаю:

if (contains(cells["dates and codes"].value,"beef"), cells["protein"].value +=" beef", "")

Выдает следующую ошибку:

Ошибка синтаксического анализа со смещением 77: отсутствует число, строка, идентификатор, регулярное выражение или выражение в скобках.

Я новичок в этом программном обеспечении и в GREL, но мой поиск не нашел такой строковой функции. (Думаю, теперь у меня есть лучшее представление о том, как ссылаться на определенные ячейки, но я полагаю, что это тоже может быть проблемой.)

A. Возможно ли это? И
B. Есть ли более эффективный способ сделать это, чем создание сценария нескольких операторов if (contains ())?


person Dani    schedule 15.10.2014    source источник
comment
В качестве альтернативы, есть ли способ связать ключевое слово с текстом в этом новом столбце на основе ручных текстовых фильтров? То есть искать говядину, а затем объединить говядину в столбец только для этих строк? Мои усилия до сих пор привели к объединению только строк, которые уже содержат данные во втором столбце, вместо строк в этом текстовом фильтре.   -  person Dani    schedule 17.10.2014


Ответы (1)


Ваше выражение GREL имеет смысл, и похоже, что у вас есть дополнительный знак равенства по смещению 77.

if (содержит (ячейки ["даты и коды"]. значение, "говядина"), ячейки ["белок"]. значение + "говядина", "")

В любом случае вам нужно будет определить свою логику содержания, чтобы вы могли обернуть все в сверхдлинное выражение GREL. В качестве альтернативы вы можете выполнять каждый if (contains ()) отдельно. Чтобы выиграть время, я сделаю следующее:

  1. Напишите выражение один
  2. Экспорт в блокнот
  3. Обновите его с помощью функции поиска и замены
  4. Повторно примените новое выражение к своему проекту.

Вы можете найти более подробную информацию об этом процессе в это сообщение в блоге.

person magdmartin    schedule 16.10.2014
comment
Спасибо за вашу помощь! Извините, если это глупый вопрос, но это мой первый проект Refine. Что вы имеете в виду, говоря «определить мою логику»? Если мой код говорит то, что я думаю, я уже это сделал, верно? Вызов функции со всеми параметрами? Мой код все еще не работает (он либо копирует всю строку, либо пуст), и я пытаюсь выяснить, не хватает ли чего-нибудь еще. - person Dani; 16.10.2014