在Openrefine中将行分配给类别

时间:2016-09-07 06:59:00

标签: dataset data-manipulation openrefine

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

我可以搜索Apple + Orange并将其分配到名为Fruits的类别,与Milk + Wine类似,并将其分配给其他人类别,名为Drinks

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

或者可能是一个更简单的方法:查找包含Milk的所有行并将其分配到类别Drinks

3 个答案:

答案 0 :(得分:1)

这是你可以在没有代码的情况下做的事情。

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

答案 1 :(得分:1)

正如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中。

答案 2 :(得分:0)

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

  • 从您的&#39;项目&#39;的选项下拉列表中选择Edit column > Add column based on this column...
  • 新列名称&#39;类别&#39;并在表达式集中:

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

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