我不确定这个问题的标题是什么,所以如果有人能帮助我,那就太好了。
- 我有一个类似
的CSV文件ID | Num
a | 1
a | 2
a | 3
b | 4
b | 5
c | 6
c | 7
我需要结果:
ID | Num
a | 1,2,3,4
b | 4,5
c | 6,7
目前,我的解决方案是:
ary = CSV.open('some_file')
final = Array.new
id = ary[1][0] # ary[0] is "id"
numJoin = ary[1][1]
(1..ary.length).each do |i|
if id == ary[i+1][0]
numJoin = numJoin + "," + ary[i+1][1]
else
final << [id,numJoin]
id = ary[i+1][0]
numJoin = ary[i+1]]1]
end
end
它有效,但我希望有机会学习其他方法来解决这个问题,因为我认为应该有更简单的方法来解决这个问题。
提前致谢。
答案 0 :(得分:0)
您可以使用group_by
,按照传递给它的块的 return 值分组,在这种情况下,它是ID。
ary = ary.group_by { |v| v[0] }
P.S该文件看起来像CSV。