使用多值字段中的选定子字符串创建新列

时间:2017-07-03 20:50:48

标签: openrefine

我有一个非常大(800行)的OpenRefine数据集。一个单元格包含多个不同的值,但具有一致的结构(请参见下面的示例),数据用逗号分隔,类似于json数组。我想创建一个新的多值列,它只包含特定类别中的元素,如Creator或Subject。在下面的示例中,我想创建一个名为Item Creator的新列,其中仅包含Dana M. Ashley和John Smith,这两个文本中都有。到目前为止,我已尝试使用表达式forEach(value.split(","), v, v.contains("Creator:")),我得到一个识别包含Creator的段的数组,但我还不知道如何将该字符串文本提取到新列中。非常感谢帮助。

Publisher: American Federation of Teachers, Creator: Dana M. Ashley, Creator: John Smith, Subject: Prosocial behavior, Subject: Program development, Subject: Behavior problems, Subject: Classroom techniques, Subject: Student behavior, Subject: School culture, Subject: Educational environment, Subject: Positive Behavior Supports, Resource Type: Text, Language: English, Audience: Educator, Format: pdf

1 个答案:

答案 0 :(得分:0)

要将此值放入新列,请使用当前列中的下拉菜单(包含组合数据)并选择"编辑列 - >根据此列"

添加列

如果您更换了' forEach'使用'过滤器表达'你在这里得到的GREL公式中的表达式,你得到了创建者列表(在一个数组中)。要将它们存储在单元格中,可以将数组加入到字符串中:

filter(value.split(","), v, v.contains("Creator:")).join("|")

这应该会为您提供一个包含创建者列表的新列 - 它需要更多的整理才能删除"创建者:"得到一个名单列表