![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
データの日付でソートをしたい
データの日付でソートをしたいと思ってますが、うまくいっていません。
$kuchikm2の内容
1,8,,説明文,2010/07/06-01:27,1,,,,,,,
2,8,,紹介文,2010/07/18-02:27,1,,,,,,,
3,8,,コメント,2010/05/19-03:27,1,,,,,,,
4,8,,文言,2010/06/20-04:27,1,,,,,,,
ソートした結果@sorted
2,8,,紹介文,2010/07/18-02:27,1,,,,,,,
1,8,,説明文,2010/07/06-01:27,1,,,,,,,
4,8,,文言,2010/06/20-04:27,1,,,,,,,
3,8,,コメント,2010/05/19-03:27,1,,,,,,,
(perlソース)
略
#sortロジック
use warnings;
my @lines = $kuchikm2;
print @lines, " a\n";
my @sorted = map { $_->[4] }
sort { $a->[0] <=> $b->[0]}
map { [(split q{,}, $_)[4], $_] }
@lines;
print @sorted, " b\n";
(ここまで)
以前ソートで質問したときに、数字でないといけないと言われたような気がしています。
お手数かけます。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
> my @lines = $kuchikm2;
上の文では行単位で配列に入らず、要素1の配列になります。まずは、この部分を直すのが先決かと思います。
use warnings;
my @lines = map { "$_\n" } split /\n/, $kuchikm2;
print @lines, " a\n";
my @sorted = map { $_->[1] }
sort { $b->[0] cmp $a->[0]}
map { [(split /,/, $_)[4], $_] }
@lines;
print @sorted, " b\n";
No.1
- 回答日時:
日付がこのフォーマットなら, 単純に文字列として (cmp で) 比較すれば十分ではないかな.
あと, Schwartz変換が間違ってる. さらにいうと, 「Schwartz変換は必ずしも効率的ではない」という指摘もあったりします.この場合だと
my @dates = map { (split /,/)[4] } @lines;
my @sorted = @lines[sort { $dates[$a] cmp $dates[$b] } 0 .. $#lines];
とする手もあります.
この回答への補足
回答ありがとうございます。
cmpて゜比較ですね。早速やってみました。
データ
1,8,,説明文,2010/07/06-01:27,
2,8,,紹介文,2010/07/18-02:27,
3,8,,コメント,2010/05/19-03:27,
4,8,,文言,2010/06/20-04:27,
perl実行結果
1,8,,説明文,2010/07/06-01:27,
2,8,,紹介文,2010/07/18-02:27,
3,8,,コメント,2010/05/19-03:27,
4,8,,文言,2010/06/20-04:27,
結果の表示が今回初めて表示されましたが、ソートされていませんでした。
(perlソース)
略
#sortロジック
use warnings;
my @lines = $kuchikm2;
print @lines, " a\n";
my @dates = map { (split /,/)[4] } @lines;
my @sorted = @lines[sort { $dates[$a] cmp $dates[$b] } 0 .. $#lines];
print @sorted, " b\n";
(ここまで)
あと少しだと思うのですが、どこがどう問題なのかがわかっていません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Visual Basic(VBA) Sub 分けてソートして貼り付ける() Dim srcSheet As Worksheet Dim 6 2023/08/04 19:57
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Excel(エクセル) Excelの50音順ソートを全ての行列に適用するには? 4 2022/12/05 11:28
- Excel(エクセル) エクセルVBA オートフィルタでの絞り込みと並び替えについて 1 2023/07/08 13:08
- その他(プログラミング・Web制作) sortの優先キーについて(スプレッドシート) 1 2023/01/17 17:59
- Oracle Oracleですがsqlで質問です。 サブクエリ内で番号というカラムで昇順の1レコード目を取得したい 3 2023/05/22 10:02
- C言語・C++・C# メインプログラムに#include <algorithm>を書いて、 そのメインプログラムが // 3 2023/05/02 11:24
- その他(Microsoft Office) Excel関数での質問です 1 2022/11/22 13:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2次元の配列にデータを格納したい
-
VBAでCSVファイルの特定行を書...
-
VBAでCSVファイルを途中行まで...
-
batファイルでrenameができませ...
-
ExcelをCSV書き出す場合のシー...
-
awkスクリプトでダブルクォーテ...
-
DOSコマンドで、標準出力を出力...
-
Firefox で file:// で始まる U...
-
ファイル出力の改行コードをLFに
-
Perlの変数に文字数制限(容量...
-
fopenでディレクトリ内の全ファ...
-
[Perl]ファイル出力のエンコー...
-
同じようなソースなのですが片...
-
エクセルVBA コードが同じでも...
-
巨大なテキストの最終行を取得...
-
エクセルVBAで素数だけを出力す...
-
バッチファイルの作り方(CSV→...
-
【C++/CLI】ファイルオープンに...
-
C#でCSVファイルを逐一更新したい
-
Perlで特定行から特定行までを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どのようなプログラムをつくれ...
-
perlでの三次元配列の作り方
-
csvで順番の入れ替え
-
配列の中に重複文字列があるか...
-
perlで複数行のデータを自由に...
-
pushをすると行ができる
-
要素を削除する最適な方法
-
行・列の整理! perl
-
ファイルから読み込んで配列へ
-
Perlの初歩的な質問・・・
-
perl-cgi 文字の長さでソートし...
-
C言語のバイナリモードでのfsca...
-
Pythonの再帰関数の動作の流れ...
-
C言語でバイナリファイルの読み...
-
ランダムでかぶらないように4...
-
ソートのテクニックについて
-
perlの無名配列の使い方を教え...
-
CSVデータ「","」と「,」混在読...
-
perlで読み込んだURLを配列に入...
-
時刻表を分でソートする方法を...
おすすめ情報