質問: ### 前提・実現したいこと Rubyで下記のような情報がたくさん入ったメモ帳を読み込み、 二つのプログラムを作成したいのですが、初心者なのでどのように書けば良いのかお詳しい方是非教えて頂けると助かります。よろしくお願いします。 ### 補足情報(言語/FW/ツール等のバージョンなど) ・1/9更新 様々な回答本当にありがとうございます。 皆様の回答を参考に作成し、実行したところ次のようなエラーが表示され、上手くいきません。自分なりに調べて解決しようとしたのですが、どうにもならずお手上げです。もしお分かりでしたら回答をよろしくお願いします。 度々申し訳ありません。 ``` C:/Ruby23/lib/ruby/2.3.0/csv.rb:1811:in`sub!': invalid byte sequence in Windows-31J (ArgumentError) from C:/Ruby23/lib/ruby/2.3.0/csv.rb:1811:in `block in shift' from C:/Ruby23/lib/ruby/2.3.0/csv.rb:1805:in`loop' from C:/Ruby23/lib/ruby/2.3.0/csv.rb:1805:in `shift' from C:/Ruby23/lib/ruby/2.3.0/csv.rb:1747:in`each' from C:/Ruby23/lib/ruby/2.3.0/csv.rb:1761:in `to_a' from C:/Ruby23/lib/ruby/2.3.0/csv.rb:1761:in`read' from C:/Ruby23/lib/ruby/2.3.0/csv.rb:1307:in `parse fromC:/Users/users/Desktop/Programing/web/test1.rb:10:in`'
回答: データ量が 100 万件レベルになるなら、Database の利用を検討すべきと思います。 ここでは、データをすべてメモリーに読み込んで処理してみました。 csv データは、 なんちゃって個人情報 を利用して、ダミーデータ 5000 件を作成し、プログラムをはしらせてみました。 x.rb ``` require 'csv' headers, *data = CSV.read('dummy.csv', headers: false) p headers # ['名前', '性別', '年齢', '誕生日', '都道府県'] p data.size # 5000 p data[0] # ['細山 勝久', '男', '34', '1982/11/18', '新潟県'] # 男性の最高齢者一覧 p max_old = data.select { |x| x[1] == '男' }.map { |x| x[2].to_i }.max p data.select { |x| x[1] == '男' && x[2].to_i == max_old } # 都道府県別の人数 p z = data.group_by { |x| x[4] }.map { |k, v| [k, v.size] } # 都道府県別の人数の合計 p z.inject(0) { |acc, elem| acc += elem[1] } ``` 実行結果例 ``` $ ruby x.rb ["名前", "性別", "年齢", "誕生日", "都道府県"] 5000 ["細山 勝久", "男", "34", "1982/11/18", "新潟県"] 100 [["加藤 慶太", "男", "100", "1916/1/24", "神奈川県"], ["野田 幸平", "男", "100", "1916/4/12", "兵庫県"], ["今井 竜也", "男", "100", "1916/7/31", "奈良県"], ["佐々木 染五郎", "男", "100", "1916/9/27", "沖縄県"], ["田島 慶太", "男", "100", "1916/9/3", "宮城県"], ["亀井 栄一", "男", "100", "1916/7/21", "千葉県"], ["浅沼 雅彦", "男", "100", "1916/2/23", "大阪府"], ["砂川 聡", "男", "100", "1916/6/4", "愛知県"], ["小日向 雅功", "男", "100", "1916/12/13", "群馬県"], ["中原 サンタマリア", "男", "100", "1916/12/25", "愛知県"], ["西岡 陽介", "男", "100", "1916/6/24", "大阪府"], ["阿久津 寛治", "男", "100", "1916/4/19", "埼玉県"], ["上杉 勇介", "男", "100", "1916/1/30", "北海道"], ["仲村 たかお", "男", "100", "1916/8/4", "東京都"], ["前田 敏和", "男", "100", "1916/7/23", "奈良県"], ["朝倉 豊", "男", "100", "1916/11/15", "埼玉県"], ["松尾 三郎", "男", "100", "1916/2/8", "千葉県"], ["蒼井 和之", "男", "100", "1916/6/12", "青森県"], ["秋葉 洋", "男", "100", "1916/6/23", "山形県"], ["大城 守", "男", "100", "1916/7/25", "神奈川県"], ["平田 守", "男", "100", "1916/1/15", "大阪府"], ["石丸 竜也", "男", "100", "1916/10/22", "埼玉県"], ["大沼 隆之介", "男", "100", "1916/5/3", "三重県"], ["益岡 浩介", "男", "100", "1916/11/8", "兵庫県"], ["池畑 真吾", "男", "100", "1916/10/1", "茨城県"], ["小出 草太", "男", "100", "1916/2/17", "北海道"], ["浅井 人志", "男", "100", "1916/10/21", "京都府"], ["池田 マサカズ", "男", "100", "1916/9/11", "東京都"], ["大竹 ジローラモ", "男", "100", "1916/12/27", "神奈川県"], ["角谷 薫", "男", "100", "1916/7/27", "千葉県"], ["久保 哲平", "男", "100", "1916/3/28", "長崎県"], ["藤村 まさし", "男", "100", "1916/8/18", "山口県"], ["岩佐 建", "男", "100", "1916/8/9", "福島県"], ["下田 優", "男", "100", "1916/8/27", "千葉県"], ["小林 基祐", "男", "100", "1916/5/8", "北海道"]] [["新潟県", 101], ["山形県", 46], ["兵庫県", 250], ["京都府", 107], ["佐賀県", 24], ["東京都", 505], ["茨城県", 109], ["福岡県", 212], ["福島県", 78], ["秋田県", 39], ["熊本県", 79], ["和歌山県", 40], ["青森県", 56], ["千葉県", 244], ["山口県", 63], ["北海道", 232], ["高知県", 27], ["大阪府", 346], ["滋賀県", 51], ["埼玉県", 297], ["三重県", 90], ["鹿児島県", 73], ["山梨県", 41], ["愛知県", 277], ["神奈川県", 325], ["広島県", 118], ["岐阜県", 78], ["岩手県", 48], ["宮崎県", 51], ["岡山県", 75], ["福井県", 29], ["富山県", 39], ["石川県", 51], ["愛媛県", 65], ["長崎県", 55], ["長野県", 77], ["宮城県", 88], ["大分県", 42], ["栃木県", 74], ["静岡県", 146], ["奈良県", 44], ["島根県", 30], ["群馬県", 63], ["沖縄県", 41], ["香川県", 30], ["鳥取県", 12], ["徳島県", 32]] 5000 ```