質問: 10万行ちかくあるCSVファイルがあります。 それをマイクロソフトエクセルのピボットデーブルのような機能をつかってクロス集計などを実施したいと思っています。 エクセルですと、当然のようにファイル全体を読み込むことができませんので、代わりのソフトをさがしています。 マイクロソフトアクセス以外で教えていただきたいと思います。 よろしくお願いいたします。
回答: 大きなテキストデータの処理なら,awkやperlを検討してはいかがでしょうか? クロス"集計"だけなら2~3行のawkコードで実現できます。入力ファイルに対し1行ずつ処理を行うので,ファイルが開けない事態はあまり起きません。 awkはコマンドプロンプトから実行します。 からgawkをダウンロード・インストールしてください の例に習ってデータが 1列目 担当者 2列目 商品 3列目 金額 となっている場合,プロンプト上で > gawk 'BEGIN{FS = ","} {SUM[$1"_"$2] += $3} END {for (item in sum) { print item","SUM[item]}}' 入力ファイル.csv > 出力ファイル.csv と入力すると,出力ファイル.csvに 担当者A_商品1,合計金額 担当者B_商品3,合計金額 : とクロス集計の結果を縦に並べた結果が得られます。 ただし,項目組み合わせの順番はバラバラです。 単純に頻度が必要ならsumの計算のところの $3を1にしてください。 クロス集計"表”が必要ならawkでコードを書くことも出来ますが,出力ファイル.csvは小さくなるはずなので,エクセルで開いてソートや表の作成を行えば良いと思います。 http://infoshako.sk.tsukuba.ac.jp/jdoc/GNU/AWK/jgawk-jman/ht... awkの使い方はこの辺を参考にしてください。