人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CSVデータの整理作業を効率化したいです。

使用しているソフトウェア(スタンドアロンのアプリケーション)から
出力されるログデータの処理を行っています。

CSVのデータは
00:00:00,23.1
のように1つ目の項目に時刻、2つ目の項目に値が入っています。
行数は都度変わります。(60行であったり、100行であったり)

この出力されたCSVデータでExcelのAVERAGE関数を使って
値列の平均を求めていますが、これを自動作業で行おうとした場合、
どのような手段で行うのがよいでしょうか?マクロ?VB.NETで自作ソフト?

OSはWindows7、Officeは2010を使用しています。

おすすめがありましたら教えて頂けると嬉しいです。

●質問者: 匿名質問者
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 匿名回答1号

文字列処理に特化した処理系を使って良いのなら、
AWK等を覚えると良いと思います。
http://www.vector.co.jp/soft/win95/util/se376460.html

次のような感じで処理できます。
gawk "BEGIN{FS=\",\"}(/[0-9]/){sum=sum+$2;line=line+1}END{print sum/line}" log.csv

さらにこの結果を取り込んで高度な加工をしたい場合にはAWKの処理部分をファイルで記述することにより、ログの処理程度でしたらほとんどの事が可能です。

Windowsの流儀と異なるかもしれませんが、AWKは枯れていて仕様変更はありませんので、一度覚えるとずっとその知識が使えます。バージョンアップなどで新技術に振り回されるような事が無いです。

やはりWindowsですのであくまでExcel等をメインに仕様変化について行きつつ、変化が無くて長持ちする処理系も覚えておくといざという時に便利かと思います。


匿名質問者さんのコメント
回答ありがとうございました。 AWKは名前だけ聞いたことがあったので、紹介いただいて見てみました。 仕様変更がないのは確かに魅力的でした。 あとは、実行環境だったり操作する人間のスキルのハードルを さげられたらなと思いました。 複数のメンバーが本作業を行う場面があり、このため、 CSVファイルを選んで…処理ボタンをぽちっと押したら いつもAVERAGE関数を手打ちするところをさくっと実施してくれる! みたいな方向にできたらなと思いました。

2 ● 匿名回答2号
ベストアンサー

以下の内容を「average.jse」という名前のファイルに保存してください。
あとはaverage.jseのアイコンに、集計したいデータが入ったcsvファイルをドラッグ&ドロップすると平均を算出してメッセージボックスで表示してくれます。
メッセージボックスが表示されているときにCtrl+Cを押すことで、クリップボードにメッセージ内容を取得することができます。

var fso = new ActiveXObject("Scripting.FileSystemObject");
var oWArgv = WScript.Arguments;

if (oWArgv.length == 0) {
 WScript.Echo("drag & drop file");
 WScript.Quit();
}

var path = oWArgv.item(0);

sum = 0;
cnt = 0;

var ts = fso.OpenTextFile(path);
while (!ts.AtEndOfStream) {
var line = ts.ReadLine();
sum += Number(line.split(",")[1]);
cnt += 1;
}
ts.Close();

WScript.Echo(sum / cnt);

匿名質問者さんのコメント
ご回答の上、ソースコードまで・・ありがとうございます! 実施してみて平均も確かにでました。 自分でもアレンジできるよう、色々いじってみます。 ありがとうございました。

質問者から

2名の方ご回答ありがとうございました。
AWKをここで調べてみることになったのも貴重でしたし、
ソースコードまで記載いただくのもありがたかったです。

ベストアンサーについては悩みましたが、Windows環境ですぐ実行
可能な方へさせていただきましたが、どちらもありがたかったです。
ありがとうございました。


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ