OpenRefine-在列中拆分多个值,并用1或各自的名称填充



我的csv是一项调查。我的顾客可以装满一种或多种口味的冰淇淋。例如:爱丽丝回答巧克力,焦糖。

服装|口味

爱丽丝|巧克力,焦糖

Chris |奶油巧克力

Daniel |奶油、西瓜

上方表格的打印屏幕

如何转换列中的味道,并在相应的单元格中填充1或味道的名称。

冰淇淋有60多种口味。

服装|巧克力焦糖|西瓜

Alice|1|1|0|

Chris |1|0|1|

Daniel |0|1|1

上方表格的打印屏幕

这是一个经常发生的难题。以下是我处理这个问题的方法。

首先,拆分单元格值以分隔Flavor列,使其每行具有一个值。请参阅伊利诺伊大学的这篇教程,他们有很多很棒的OpenRefine教程。那么你应该有一张这样的桌子:

Name   | Flavour
------ | ----------
Alice  | Chocolate
| Caramel
Chris  | Cream
| Chocolate
Daniel | Cream
| Watermelon

其次,填写"名称"列。您可能需要切换到录制模式。有关填充的详细信息,请参阅OpenRefine文档。

Name   | Flavour
------ | ----------
Alice  | Chocolate
Alice  | Caramel
Chris  | Cream
Chris  | Chocolate
Daniel | Cream
Daniel | Watermelon

我不认为OpenRefine的转置功能会像你希望的那样在Flavour中传播级别,而不会陷入很多GREL黑魔法。然后我会尝试将其导入Google Sheets或Microsoft Excel。然后添加一个刚刚用";1〃;。

Name   | Flavour    | Value 
------ | ---------- | ----- 
Alice  | Chocolate  | 1
Alice  | Caramel    | 1
Chris  | Cream      | 1
Chris  | Chocolate  | 1
Daniel | Cream      | 1
Daniel | Watermelon | 1

有了这种结构,您应该能够构造一个数据透视表,将数据转换为最终格式。指定值时,请确保未使用聚合函数。

如果遇到麻烦,请添加评论。

最新更新