【问题标题】:Assign rows to category in Openrefine在 Openrefine 中将行分配给类别
【发布时间】:2016-09-07 06:58:59
【问题描述】:

我有一个这样的数据集,我正在寻找一种方法来根据我拥有的产品类型添加一个类别。

我可以搜索Apple + Orange 并将它们分配给名为Fruits 的类别,与Milk + Wine 类似,然后将它们分配给另一个名为Drinks 的类别吗?

| Item  | Category |
|-------|----------|
| Apple |          | <-- Fruits
| Orange|          | <-- Fruits
| Milk  |          | <-- Drinks
| Wine  |          | <-- Drinks

或者更简单的方法:找到任何包含Milk 的行并将它们分配到类别Drinks

【问题讨论】:

    标签: dataset data-manipulation openrefine


    【解决方案1】:

    这是您无需代码即可完成的事情。

    • Item 字段中每个值的过滤器或构面
    • Category 字段上创建构面
    • 单击Category 构面中空白值旁边的edit 按钮,然后键入要添加的类别。
    • 编辑您的 Item 构面或过滤器以移至下一个类别并重复此过程,直到您对所有项目进行分类。

    【讨论】:

      【解决方案2】:

      正如 magdmartin 所说,您可以使用构面和编辑来做到这一点 - 他描述的解决方案可能是最简单的方法并且最不容易出错。但是,如果您更喜欢一步完成,您可以使用 GREL 测试 Item 单元格的内容,然后根据 Item 单元格的内容设置 Category 单元格中的值。

      with(cells["Item"].value.toLowercase(),w,if(or(w=="orange",w=="apple"),"Fruits",if(or(w=="milk",w=="wine"),"Drinks","")))
      

      这与上面 Ettore Rizza 给出的方法相同,但使用的是 GREL 而不是 Jython。

      【讨论】:

        【解决方案3】:

        magdmartin 和 Owen Stephens 给出了很好的答案。另一种使用 GREL 的简单方法:

        • 从“项目”的选项下拉列表中选择Edit column &gt; Add column based on this column...
        • 新列名称“类别”和表达式集中:

        value.replace("Apple","Fruit").replace("Orange","Fruit").replace("Milk","Drink").replace("Wine","Drink")

        你可以继续添加.replace("whatever food","whatever category") ad nauseum

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-03-05
          • 2015-06-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-20
          • 1970-01-01
          相关资源
          最近更新 更多