Measure-Object コマンドレットの使用

基本的な統計情報の計算

Measure-Object コマンドレットを使用すると、オブジェクトの統計情報 (カウント、平均、合計、最小値、最大値) を簡単に生成できます。たとえば、次のテキスト ファイルがあり、ユーザー名とユーザーのスコアが何か (それが何かは関係ありません) に記載されています。

Name,Score
Dan K. Bacon Jr.,64
Jean Philippe Bagel,89
Erzsebet Balazs,45
Martin Bankov,64
Peter Bankov,33
Angel Barbariol a,89
David Barber,88
Rob Barker,55
Miklos Barkoczi,86
Dave Barnett,56
Josh Barnhill,75
Adam Barr,33
Paula Barreto de Mattos,89
Gytis M. Barzdukas,62
Shai Bassli,87
Pilar Colome Bassols,24
Tomasz Bator,67
Shaun Beasley,77
Mark Bebbington,35
Anna Bedecs,78
Parry Bedi,86
Ann Beebe,64
Dick Beekman,74
Balazs Belinszki,79
Kostadin Belishky,55
Mason Bendixen,64
Almudena Benito,33
Ido Ben-Sachar,56
Wanida Benshoof,81

スコア数、平均スコア、最高スコア、最低スコアを計算するとします。信じられないかもしれませんが、1 つのコマンドですべてを実行できます。

Import-Csv c:\scripts\test.txt | Measure-Object score -ave -max -min

コマンド自体はごく簡単です。Import-Csv コマンドレットを使用して、テキスト ファイルからデータをインポートします。このデータは Measure-Object コマンドレットにパイプ処理されます。パイプラインの一方で、Measure-Object に、統計情報を生成するプロパティ名またはアイテム名 (この場合は score) を続けます。また、-ave-max-min の各パラメータも含めます (-sum 以外)。この点は重要です。カウント (データセットのアイテム数) 以外については、コマンドに特に含まれる統計情報のみが返されます。

結果のデータは次のようになります。

Count    : 29
Average  : 65.1034482758621
Sum      :
Maximum  : 89
Minimum  : 24
Property : Score

Measure-Object を使用するのは、統計情報を生成する場合のみということに注意してください。たとえば上位 5 位のスコアを取った人物を表示するような操作は実行しません。このような種類の情報が必要な場合、データを並べ替え、次のように Select-Object コマンドレットを使用します。

Import-Csv c:\scripts\test.txt | Sort-Object score -descending | Select-Object -first 5

このコマンドが返すデータを次に示します。

Name                                    Score
----                                    -----
Paula Barreto de Mattos                 89
Angel Barbariol a                       89
Jean Philippe Bagel                     89
David Barber                            88
Shai Bassli                             87

また、下位 5 位のスコアを決定することもできます。使用するコマンドはまったく同じですが、並べ替えは降順ではなく昇順 (既定値) にします。

Import-Csv c:\scripts\test.txt | Sort-Object score | Select-Object -first 5

たとえばゴルフ トーナメントで、5 名の成績が優秀だったとします。

Name                                    Score
----                                    -----
Pilar Colome Bassols                    24
Peter Bankov                            33
Almudena Benito                         33
Adam Barr                               33
Mark Bebbington                         35
関連リンク