easydb.rb で次のような架空の試験点数の成績処理をしてみた。
Ruby$ cat seiseki.txt {:name=>x[0], :sugaku=>x[1].to_f, :kokugo=>x[2].to_f, :eigo=>x[3].to_f} name sugaku kokugo eigo A,90,65,55 B,46,50,50 C,63,63,58 D,50,40,48 E,55,32,40 (注 ブログの表示の関係で一行目の format が折り返しているが、コピペで使うときは一行にしておかないと動作しない) 実行例は次のようになる。 Ruby$ ruby easydb.rb easydb> table, all = read('seiseki.txt') easydb> table.dump(all) A 90.0 65.0 55.0 B 46.0 50.0 50.0 C 63.0 63.0 58.0 D 50.0 40.0 48.0 E 55.0 32.0 40.0 テーブルに個人の総得点を追加する。 easydb> table.each{|x| x[:gokei] = x[:sugaku] + x[:kokugo] + x[:eigo]} easydb> table.dump(all+' gokei') A 90.0 65.0 55.0 210.0 B 46.0 50.0 50.0 146.0 C 63.0 63.0 58.0 184.0 D 50.0 40.0 48.0 138.0 E 55.0 32.0 40.0 127.0 ラベル all に総得点のラベル gokei を追加してデフォールトで表示するようにする。 easydb> all = all + ' gokei' 生徒を総得点の多い順にソートする。 easydb> table.sort{|x,y| y[:gokei] <=> x[:gokei]}.dump(all) A 90.0 65.0 55.0 210.0 C 63.0 63.0 58.0 184.0 B 46.0 50.0 50.0 146.0 D 50.0 40.0 48.0 138.0 E 55.0 32.0 40.0 127.0 英語の最高点を検索する。 easydb> p table.collect{|x| x[:eigo]}.max 58.0 英語の最高点をとった生徒を検索する。 easydb> table.select{|x| x[:eigo] == 58.0}.dump(all) C 63.0 63.0 58.0 184.0 総得点の最低点を検索する。 easydb> p table.collect{|x| x[:gokei]}.min 127.0 生徒の総得点の合計を計算し、変数 sum に入れる。 easydb> sum = table.inject(0.0){|s,x| s += x[:gokei]} easydb> p sum 805.0 総得点の平均を計算し、変数 mean に入れる。 easydb> mean = sum / table.size.to_f easydb> p mean 161.0 個人の総得点が mean 以上のものを検索する。 easydb> table.select{|x| x[:gokei] > mean}.dump(all) A 90.0 65.0 55.0 210.0 C 63.0 63.0 58.0 184.0 数学の得点が国語の得点より多いものを検索する。 easydb> table.select{|x| x[:sugaku] > x[:kokugo]}.dump(all) A 90.0 65.0 55.0 210.0 D 50.0 40.0 48.0 138.0 E 55.0 32.0 40.0 127.0 このくらいのことなら、Excel を使った方が速いのかもしれないが、思いつくままに Ruby の式でデータを処理していろいろな切り口で眺めるのはおもしろい。
by tnomura9
| 2008-09-15 09:20
| Ruby
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||