使用 OpenRefine 将行转置为列(行数可变)

Transpose rows into columns with OpenRefine (variable number of rows)

任何人都可以帮助我将可变数量的行转换为列吗?

我有这样的数据:

ID, NAMES
1, Jon
1, Jonny
1, Jonathan
2, James
3, Bill
3, William
4, Robert
4, Bob
4, Bobby
4, Rob

并且想要这个:

ID, Name1, Name2, Name3, Name4
1, Jon, Jonny, Jonathan
2, James
3, Bill, William
4, Robert, Bob, Bobby, Rob

换句话说,对于每个 ID,我想找到具有该 ID 的所有行,并将每个名称放入一个单独的列(或一个单独的列,名称以逗号分隔的列表)

我知道每个ID最多有4个名字。

我认为使用 OpenRefine 这很容易,但我真的想不通。有人可以帮忙吗?

您可以采用的方法是:

  • 根据ID字段创建OpenRefine"records"
  • 将与一条记录关联的姓名合并到一个单元格中
  • 将新的多值名称单元格拆分为多列

详细:

  • 在 ID 列中使用 "Edit Cells -> Blank down"
  • 确保您处于记录模式(数据网格左上角 "Show as: Records"
  • 在 NAMES 列中使用 "Edit Cells -> Join multi-valued cells" 指定您确信不会出现在任何名称中的分隔符(例如竖线字符 | )
  • 然后在 NAMES 列中使用 "Edit Column -> Split into several columns" 指定相同的分隔符

这应该会给出您在这里寻找的结果