人気ブログランキング | 話題のタグを見る

Ruby で表計算

Excel などの表計算は便利だが、ちょっと複雑な計算や検索をさせようとすると操作が面倒だ。Ruby の Enumerable Mix-in の関数を使うと、Rubyで表計算の処理をさせることができる。

たとえば次のような表があるとする。

table = [
{:name => 'Ken', :age => 24},
{:name => 'Mary', :age => 20},
{:name => 'John', :age => 31},
{:name => 'Mary Ann', :age => 3}]

ちょっと荒っぽいが、Array クラスにテーブルを表示するメソッドを定義する。

class Array
  def dump
    self.each{|x| print x[:name], ' ', x[:age], "\n"}
  end
end

そうすると上のテーブルは次のようにして表示できる。

table.dump

名前でソートするには次のようにする。

table.sort{|x,y| x[:name] <=> y[:name]}.dump

20歳以下のメンバーを抽出するには次のようにする。

table.select{|x| x[:age] <= 20}.dump

年齢の合計を求めるには次のようにする。

total = 0; table.each{|x| total += x[:age]};puts total

平均を求めるには次のようにする。

table.each{|x| total += x[:age]};puts total/table.size

正規表現を使った検索は次のようにする。

result = []; table.each{|x| result.push(x) if x[:name] =~ /Mary/}; result.dump

その他いろいろな処理を、Rubyで自由に行うことができる。小さいデータならリレーショナルデータベースの真似事をさせることもできる。いちいちハッシュを記述するのが面倒ならテキストファイルを読み込んで作るようにすることもできる。また、peg.rb を使えば偽SQLが作れそうだがそれはまたの機会に。
by tnomura9 | 2008-09-09 01:52 | Ruby | Comments(0)
<< Ruby で表計算 その2 含意 >>