配列の中のハッシュをまとめる

以下のデータを同じnameごとにまとめて、dataを加算したい

[
{name: "fruits", data: [1,2,3]},
{name: "meat", data: [3,4,5]},
{name: "fruits", data: [5,6,7]}
]

求める形

[
{name: "fruits", data: [6,8,10]},
{name: "meat", data: [3,4,5]},
]
arr = [
  {name: "fruits",data: [1,2,3]},
  {name: "veget",data: [3,4,5]},
  {name: "fruits",data: [6,7,8]}
]

category = arr.map{|a| a[:name]}.uniq

reduced = category.map do |c|
  {name: c, 
   data: arr
         .select{|a| a[:name]==c}#該当カテゴリのものを抽出
         .map{|a| a[:data]} #ハッシュのdataキーのものを取り出す
         .transpose #くっつける
         .map{|a| a.inject(:+)} #足す
  }
end

p reduced 
#=> [{:name=>"fruits", :data=>[7, 9, 11]}, {:name=>"veget", :data=>[3, 4, 5]}]

最後の配列の足し算の部分
http://d.hatena.ne.jp/seinzumtode/20150628/1435484534