Tukubaiオンラインコマンドマニュアル - ratio(1)
ratio(1)
【名前】
ratio
: 構成比算出
【書式】
Usage : ratio key=<key> <file> Option : ref=<ref> ←参照キーの指定 : -<s> ←小数点以下の精度 : +<n>h ←先頭<n>行をヘッダーとみなす Version : Tue Oct 20 15:17:47 JST 2020 Edition : 1
【説明】
引数のファイルまたは標準入力のテキストデータに対し、key=
で指定したフィールドに対して全行の合計に対する各フィールドの値の構成比を算出し、次のフィールドに挿入して出力する。
【例1】
$ cat data a店 1日目 103 62 ←店名 日付 売数 客数 b店 1日目 210 113 c店 1日目 81 52 d店 1日目 75 48 e店 1日目 211 140 $
売数(第3フィールド)の店別構成比を求めて売数の次のフィールドに挿入するには、次のようにコマンドを実行する。
$ ratio key=3 data | keta a店 1日目 103 15.1 62 ←第4フィールドが構成比になっている b店 1日目 210 30.9 113 c店 1日目 81 11.9 52 d店 1日目 75 11.0 48 e店 1日目 211 31.0 140 $
【例2】refオプション
ref=
で指定したフィールドをキーフィールドとし、キーフィールドの値が同じ行の中で構成比を計算して出力する。なお、キーフィールドはあらかじめ整列されていることが条件となる。
$ cat data a店 1日目 103 62 ←店名 日付 売数 客数 a店 2日目 157 94 a店 3日目 62 30 b店 1日目 210 113 b店 2日目 237 121 b店 3日目 150 82 c店 1日目 81 52 c店 2日目 76 49 c店 3日目 38 21 d店 1日目 75 48 d店 2日目 72 42 d店 3日目 34 19 e店 1日目 211 140 e店 2日目 149 91 e店 3日目 120 73 $
各日(第2フィールド)毎に店別の売数(第3フィールド)の構成比を求める。
$ sort -k2,2 -k1,1 data | ratio ref=2 key=3 | keta a店 1日目 103 15.1 62 ←第4フィールドが1日目における構成比 b店 1日目 210 30.9 113 c店 1日目 81 11.9 52 d店 1日目 75 11.0 48 e店 1日目 211 31.0 140 a店 2日目 157 22.7 94 ←第4フィールドが2日目における構成比 b店 2日目 237 34.3 121 c店 2日目 76 11.0 49 d店 2日目 72 10.4 42 e店 2日目 149 21.6 91 a店 3日目 62 15.3 30 ←第4フィールドが3日目における構成比 b店 3日目 150 37.1 82 c店 3日目 38 9.4 21 d店 3日目 34 8.4 19 e店 3日目 120 29.7 73 $
【例3】+hオプション
+<n>h
オプションを付けると、先頭の<n>
行を飛ばして構成比を計算する。先頭行に既に項目名などのヘッダーが付与されているデータを計算する場合などに使用する。新たに増える構成比のフィールドのヘッダーは@となる。
$ cat data 店 日付 売数 客数 ←項目名のヘッダー a店 1日目 103 62 b店 1日目 210 113 c店 1日目 81 52 d店 1日目 75 48 e店 1日目 211 140 $
先頭行を飛ばして売数(第3フィールド)の店別構成比を求めて売数の次のフィールドに挿入する。
$ ratio +h key=3 data | keta 店 日付 売数 @ 客数 ←先頭行はそのまま(計算しない) a店 1日目 103 15.1 62 ←第4フィールドが構成比になっている b店 1日目 210 30.9 113 c店 1日目 81 11.9 52 d店 1日目 75 11.0 48 e店 1日目 211 31.0 140 $
【例4】-<s>オプション
-<数値>で構成比の小数点以下の精度を指定できる。
$ cat data a店 1日目 103 62 ←店名 日付 売数 客数 b店 1日目 210 113 c店 1日目 81 52 d店 1日目 75 48 e店 1日目 211 140 $
売数(第3フィールド)の店別構成比を小数点3桁まで求める。
$ ratio -3 key=3 data | keta a店 1日目 103 15.147 62 b店 1日目 210 30.882 113 c店 1日目 81 11.912 52 d店 1日目 75 11.029 48 e店 1日目 211 31.029 140 $