ratio : 構成比を求める。
Usage : ratio [key=<key>] val=<val>
<file>
Option : -<p>
+<n>h
--first
--last
--max
--min
--auto
Version : Wed Sep 19 13:56:03 JST 2018
Edition : 1
(元データ:data)店 日付 売数 客数
$ cat data
a店 1日目 103 62
b店 1日目 211 113
c店 1日目 81 52
d店 1日目 75 48
e店 1日目 210 140
売数(第3フィールド)の店別構成比を求めて売数の次のフィールドに挿入
します。
$ ratio val=3 data | keta
a店 1日目 103 15.1 62
b店 1日目 211 31.0 113
c店 1日目 81 11.9 52
d店 1日目 75 11.0 48
e店 1日目 210 30.9 140
↑ 構成比
例2
"key=" で指定したフィールドをキーフィールドとし、キーフィールドの値
が同じレコードの中で構成比を計算して出力します。
尚、キーフィールドは予めソートされていることが条件となります。
(元データ:data2)店 日付 売数 客数
$ cat data2
a店 1日目 103 62
a店 2日目 157 94
a店 3日目 62 30
b店 1日目 211 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日目 210 140
e店 2日目 149 91
e店 3日目 120 73
各日(第2フィールド)毎に店別の売数(第3フィールド)の構成比を求め
ます。
$ msort key=2/1 data2 | ratio key=2 val=3 | keta
a店 1日目 103 15.1 62 ----
b店 1日目 211 31.0 113 ↑
c店 1日目 81 11.9 52 1日目の中での構成比
d店 1日目 75 11.0 48 ↓
e店 1日目 210 30.9 140 ----
a店 2日目 157 22.7 94 ----
b店 2日目 237 34.3 121 ↑
c店 2日目 76 11.0 49 2日目の中での構成比
d店 2日目 72 10.4 42 ↓
e店 2日目 149 21.6 91 ----
a店 3日目 62 15.3 30 ----
b店 3日目 150 37.1 82 ↑
c店 3日目 38 9.4 21 3日目の中での構成比
d店 3日目 34 8.4 19 ↓
e店 3日目 120 29.7 73 ----
↑ 構成比
例3
"+<n>h" オプションを付けると先頭の<n>レコードを飛ばして、構成比を計
算します。先頭行に、既に項目名などのヘッダーが付与されているデータを
計算する場合などに使用します。新たに増える構成比のフィールドのヘッダ
ーは "@" となります。
(元データ:data3)
$ cat data3
店 日付 売数 客数 ← 項目名のヘッダーがある。
a店 1日目 103 62
b店 1日目 211 113
c店 1日目 81 52
d店 1日目 75 48
e店 1日目 210 140
先頭行を飛ばして売数(第3フィールド)の店別構成比を求めて売数の次の
フィールドに挿入します。
$ ratio +h val=3 data3 | keta
店 日付 売数 @ 客数 ← 追加フィールドは "@"
a店 1日目 103 15.1 62
b店 1日目 211 31.0 113
c店 1日目 81 11.9 52
d店 1日目 75 11.0 48
e店 1日目 210 30.9 140
↑ 構成比例4
-<数値> で構成比の小数点以下の精度を指定できます。
売数(第3フィールド)の店別構成比を小数点3桁まで求めます。
$ ratio -3 val=3 data | keta
a店 1日目 103 15.147 62
b店 1日目 211 31.029 113
c店 1日目 81 11.912 52
d店 1日目 75 11.029 48
e店 1日目 210 30.882 140
例5
丸めによって構成比の合計が 100.0 にならない場合があります。この場合
に、差分を特定のレコードに加えて合計を 100.0 にします。差分を加える
レコードは以下の通りです。
--first 先頭レコード
--last 最終レコード
--max 最大値レコード
--min 最小値レコード
--auto 最大値レコード(差分が正)または最小値レコード(差分が負)
$ ratio --first val=3 data | keta
a店 1日目 103 15.2 62 ← 補正レコード
b店 1日目 211 31.0 113
c店 1日目 81 11.9 52
d店 1日目 75 11.0 48
e店 1日目 210 30.9 140
$ ratio --last val=3 data | keta
a店 1日目 103 15.1 62
b店 1日目 211 31.0 113
c店 1日目 81 11.9 52
d店 1日目 75 11.0 48
e店 1日目 210 31.0 140 ← 補正レコード
$ ratio --max val=3 data | keta
a店 1日目 103 15.1 62
b店 1日目 211 31.1 113 ← 補正レコード
c店 1日目 81 11.9 52
d店 1日目 75 11.0 48
e店 1日目 210 30.9 140
$ ratio --min val=3 data | keta
a店 1日目 103 15.1 62
b店 1日目 211 31.0 113
c店 1日目 81 11.9 52
d店 1日目 75 11.1 48 ← 補正レコード
e店 1日目 210 30.9 140
$ ratio --auto val=3 data | keta
a店 1日目 103 15.1 62
b店 1日目 211 31.1 113 ← 補正レコード
c店 1日目 81 11.9 52
d店 1日目 75 11.0 48
e店 1日目 210 30.9 140
(備考)
旧書式は ratio [ref=<ref>] key=<key> <file> です。
しばらくの間、旧書式もサポートされます。
(関連項目)
sisu(USP)