メモ帳

各種メモ代わり

CSVファイルって?

2008-03-27 22:00:00 | ソフト
3月27日(木)
天気予報では夕方から雨だったが、夜まで降ることは無かった。

青春切符でボランティア仲間と関西に行くという連れ合いを7時過ぎに駅まで送ることから一日が始まる。

研究室ではデータの整理。
sed、awk、sort、uniq とフィルタをかけてデータの整理。
Accessで2枚の表を結合してできた大きな表の穴を、awkで埋めていき完成。

別の表を結合するために正規化で悩む。
awkでフィルタのプログラミングをするも、思ったように変換されない。
不定回繰り返しフィールドを正規化のため、数値の降順に並び替え。
そのためにUbuntsuの中で、OpenOfficeのSpreadSheetを開き、
 第1キー A列を昇順に
 第2キー B列を昇順に
 第3キー C列の数値を降順に
並び替えて、CSVファイルを作る。
このファイルにawkのプログラムをかけるのだが、思ったように正規化されない。
いくらプログラムを見直してもたかが20行程度。
幾ら考えてもこんな結果が出るはずがない!

これはおかしいと元のデータを疑ったのは夜になってから。
先のSpreadSheetが吐き出したCSVファイルをmoreで開いてみると!
な、なんと! CSVファイルになってない!

CSVのCはコンマのC、(のはず!)
それがコンマになってない!(タブコードになっていた)

コンマのCでなくてもSpreadSheetが認めるCSVファイルなので、
SpreadSheetで読み込む限りにおいては、ソートされた表が出来上がっているので、
「正しい」CSVファイルができていると思って、awkのプログラムを書いていた。

大前提のコンマ区切りになってなきゃ、awkで思った結果が出るはずがない!

SpreadSheetで並び替えた表を保存すとき、
「名前をつけて保存」「ファイル形式」で「テキストCSV形式」を選択して、
保存しただけではタブ区切り。

コンマ区切りにしたければ、「テキストCSV形式」を選択した後で、
そのオプションを指定するにチェックを入れて「保存」をかけると、
開きました! オプション選定窓が。
そこで「フィールド区切り文字」に「コンマ」を指定すれば、
(ついでに文字列指定文字がダブルクオーテーション「”」になってるのを空白に変えておきましたが)、ぶじ私が標準と思っているCSVファイルができた。

そのファイルをawkに食わせると、やっと思った正規化ファイルが出来上がった。

さて、これを前の大きな表にくっつける準備。
同じキーフィールドがないので、うまく名前で結合するしかない。

そのためには大きな表に、今回作った表と並びが同じオーダーになるよう新しいフィールを作成した。このフィールドでソートをかけると正規化ファイルが結合できる予定。

そのソートに入ろうとしているところで、連れ合いより電話。

18切符で岡山に戻ってきた! 迎えに濃いとのご用命!
ということで、アッシー君は研究室を後にした。

それにしてもタブ区切りのCSVファイルってあり?