日付,値
2010/06/16,11
2010/06/16,26
2010/06/16,10
2010/06/17,64
2010/06/17,25
2010/06/18,13
2010/06/18,35
2010/06/18,21
まずは、Import-csvで読み込んでみる。
PS>Import-Csv d:\test.csv ���t �l ---- -- 2010/06/16 11 2010/06/16 26 2010/06/16 10 2010/06/17 64 2010/06/17 25 2010/06/18 13 2010/06/18 35 2010/06/18 21 |
ん~、日本語が文字化けしている。(いきなりつまずく・・・・)
どうやらUNICODE前提のようだ。
Encoding指定もできないやん。(Powershellの文字コード関係はなんかいまいち)
Import-CsvはExport-Csvしたデータ専用なのかな。
仕方がないのでGet-Contentした後、Convrtする。
PS>gc d:\test.csv | ConvertFrom-Csv 日付 値 ---- -- 2010/06/16 11 2010/06/16 26 2010/06/16 10 2010/06/17 64 2010/06/17 25 2010/06/18 13 2010/06/18 35 2010/06/18 21 |
いい感じ。
で、これを日付でグループ化。
Groupプロパティは連想配列のコレクションのようなので、グループごとの先頭なら以下の通り。
PS>gc d:\test.csv | ConvertFrom-Csv | Group 日付 | %{$_.group[0]} 日付 値 ---- -- 2010/06/16 11 2010/06/17 64 2010/06/18 13 |
最終は、
gc d:\test.csv | ConvertFrom-Csv | Group 日付 | %{$_.group[-1]} |
と思いきや、何も返ってこない。
どうも[-1]で最後が返ってくるのは配列の場合で、コレクションでは実装されていないようだ。
そこで、コレクションを配列に突っ込んでから[-1]で最終データを参照する。
(普通にコレクションのカウントプロパティでも良いとは思うが)
PS>gc d:\test.csv | ConvertFrom-Csv | Group 日付 | %{@($_.group)[-1]} 日付 値 ---- -- 2010/06/16 10 2010/06/17 25 2010/06/18 21 |
とりあえずはOKっぽい。
欲が出てきて、グループ集計もやってみたくなった。
ちょっと考えてみたが単純にはいかないかも。
変にこねくり回すより、自前でブレーク集計したほうが簡単かなぁ。
あとでやってみよ。
0 件のコメント:
コメントを投稿