OpenRefine:创建列的移位副本
OpenRefine: create a shifted copy of a column
我想知道 OpenRefine 是否允许您在创建新列时访问其他行的数据。我怀疑它不会(而且这将是一个理智的设计原则)但可能会有一个破解。
下面是一个示例,说明您可能想要执行的操作:将一列移动一行。
我有以下 table:
╔═════╦════════╗
║ row ║ Model ║
╠═════╬════════╣
║ 1 ║ Quest ║
║ 2 ║ DF ║
║ 3 ║ Waw ║
║ 4 ║ Strada ║
╚═════╩════════╝
我想获得以下结果:
╔═════╦════════╦══════════╗
║ row ║ Model ║ Previous ║
╠═════╬════════╬══════════╣
║ 1 ║ Quest ║ ║
║ 2 ║ DF ║ Quest ║
║ 3 ║ Waw ║ DF ║
║ 4 ║ Strada ║ Waw ║
╚═════╩════════╩══════════╝
查看https://github.com/OpenRefine/OpenRefine/wiki/Variables似乎没有任何变量可以让您访问当前行或记录之外的信息,所以我想知道这种操作是否可行。
很遗憾,Open Refine 中没有 "column" 变量。一种可能的解决方法是将所有数据集转换为单个记录,然后应用一点 Python/Jython。
示例:
data = row['record']['cells']['Model']['value']
for i, el in enumerate(data):
if value == el and i !=0:
return data[i - 1]
截屏:
我不知道 GREL 中的解决方案是否可行。
我想知道 OpenRefine 是否允许您在创建新列时访问其他行的数据。我怀疑它不会(而且这将是一个理智的设计原则)但可能会有一个破解。
下面是一个示例,说明您可能想要执行的操作:将一列移动一行。
我有以下 table:
╔═════╦════════╗
║ row ║ Model ║
╠═════╬════════╣
║ 1 ║ Quest ║
║ 2 ║ DF ║
║ 3 ║ Waw ║
║ 4 ║ Strada ║
╚═════╩════════╝
我想获得以下结果:
╔═════╦════════╦══════════╗
║ row ║ Model ║ Previous ║
╠═════╬════════╬══════════╣
║ 1 ║ Quest ║ ║
║ 2 ║ DF ║ Quest ║
║ 3 ║ Waw ║ DF ║
║ 4 ║ Strada ║ Waw ║
╚═════╩════════╩══════════╝
查看https://github.com/OpenRefine/OpenRefine/wiki/Variables似乎没有任何变量可以让您访问当前行或记录之外的信息,所以我想知道这种操作是否可行。
很遗憾,Open Refine 中没有 "column" 变量。一种可能的解决方法是将所有数据集转换为单个记录,然后应用一点 Python/Jython。
示例:
data = row['record']['cells']['Model']['value']
for i, el in enumerate(data):
if value == el and i !=0:
return data[i - 1]
截屏:
我不知道 GREL 中的解决方案是否可行。