From: askar k Date: 2011-05-01T23:27:17+09:00 Subject: [ruby-list:48036] Re: CSVファイルのデータをソートしたい Matsuoさん 返事をありがとうございます。 下記の内容、すぐにキャッチできませんが、理解するように努力します。 ちなみに、私のRuby環境は: Mac OS X 10.6.7 ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10] 下記のリンクの1.9.2を1.8.7に変えると1.8.7にあったマニュアルもありました。 参考にさせて頂きます。 宜しくお願いします、 アスカル 2011/5/1 Aiga Matsuo : > とりあえずCSVを読み込んで配列にするのはこのあたりで。 > > http://doc.ruby-lang.org/ja/1.9.2/class/CSV.html > > 配列のソートはArrayに便利なメソッドが詰まっているのでこのあたりで。 > > http://doc.ruby-lang.org/ja/1.9.2/class/Array.html > > A列っていうとExcelっぽいですが、配列の1要素目でソートするなら。 > > irb(main):001:0> [[3,2,1], [1,2,3], [2,3,1]].sort > => [[1, 2, 3], [2, 3, 1], [3, 2, 1]] > > とやっても、 > > irb(main):002:0> [[3,2,1], [1,2,3], [2,3,1]].sort {|a, b| a <=> b} > => [[1, 2, 3], [2, 3, 1], [3, 2, 1]] > > 明示的に比較方法をブロックで与えてあげてもそれなりに動作すると思います。 > > ※せっかく勉強するならirbも駆使したほうが、色々と実験できて便利かと。 > > 例に挙がっているA列、C列でのソートを一行で書くとこんな感じですかね。 > > irb(main):008:0> [[1,1,2], [1,2,2], [2,2,2], [2,2,1], [2,1,1], [1,1,1]].sort > {|a, b| (a[0] <=> b[0]) == 0 ? a[2] <=> b[2] : a[0] <=> b[0] } > => [[1, 1, 1], [1, 2, 2], [1, 1, 2], [2, 2, 1], [2, 1, 1], [2, 2, 2]] > > なんか、汚いですが。 > > 2011年5月1日19:16 askar : > >> お世話になっています。 >> >> CSVファイルのデータをソートしたいのですが、中身をデータを配列としてみたら2次元の配列になります。 >> >> データは2つの列(例えば優先1ーA列、優先2ーC列)でソートするにはプログラム上、CSVのデータをまず配列に変換する必要はあるのでしょうか。それとも配列せずに実現できる物でしょうか。 >> >> 宜しくお願いします、 >> アスカル > > > > > -- > Aiga Matsuo >