Ruby
Excel
配列

Rubyの2次元配列をExcelのSUMIFS関数のように集計する

以下のようなデータを、

計上月 部門 科目
2月 A 売上 20
2月 B 売上 120
2月 A 売上 140
3月 B 売上 20
3月 B 原価 150
3月 B 売上 10
3月 A 原価 80
3月 A 原価 90

以下のように集計したい。

計上月 部門 科目
2月 A 売上 160
2月 B 売上 120
3月 A 原価 170
3月 B 売上 30
3月 B 原価 150

つまり、計上月・部門・科目を複合主キーとして2次元配列を集計したい。
以下コード。

data = [["計上月", "部門", "科目", "値"], ["2月", "A", "売上", "20"], ...]

##初期値を0にセット
hash = Hash.new 0

## 3つの要素をキーにして、値を足していく
data[1..-1].map do |row|
 hash[[row[0], row[1], row[2]]] += row[3]
end

以上