CSV,将多行转换为以逗号分隔的列表,按另一列的值分组

时间:2016-08-12 09:02:57

标签: mysql excel csv

我有一个包含两列的CSV文件。第1列包含组ID,第2列包含项ID。

这是一些示例数据(从excel中复制)

- 5 154
- 5 220
- 5 332
- 5 93
- 5 142
- 5 471
- 5 164
- 5 362
- 5 447
- 5 1697
- 5 170
- 6 173
- 6 246
- 6 890
- 6 321
- 6 421
- 6 1106
- 6 5
- 6 253
- 6 230
- 6 551
- 8 2155
- 8 2212
- 8 2205
- 8 2211
- 8 2165
- 8 2202
- 8 1734
- 8 2166
- 8 2129

我需要重新格式化,以便每个组ID只有一行,第2列包含以逗号分隔的项目ID列表。

所以看起来应该是这样的

-5   154,220,332,93,142,471,164362,447,1697,170
-6   173,246,890,321,421,1106,5,253,230,551
-8   2155,2212,2205,2211,2165,2202,1734,2166,2129

我很高兴将CSV导入Excel / Numbers以重新格式化。如果SELECT查询可以实现这一点,甚至可以进入临时MySQL数据库。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我觉得这样的事情最好通过 R reshape来解决 但是你进入Excel:

假设

  • A列中的组密钥
  • B列中的项目键
  • D列中的唯一组键(我猜您可以手动执行此操作)

进入E2:

=INDEX($B:$B,SMALL(IF($A$2:$A$50=$D2,ROW($A$2:$A$50),""),COLUMN()-COLUMN($D2)))

并按CTRL + SHIFT + ENTER将其作为数组公式输入。现在您可以将单元格E2复制到F2:P2和E3:P4。

结果:

enter image description here