(動画教材準備中)
sisu : 指数を求める。
Usage : sisu [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フィールド)の店別指数を求めて売数の次のフィールドに挿入し
ます。
$ sisu val=3 data | keta
a店 1日目 103 75.7 62
b店 1日目 211 155.1 113
c店 1日目 81 59.6 52
d店 1日目 75 55.1 48
e店 1日目 210 154.4 140
↑ 指数
例2
"key" オプション
"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 | sisu key=2 val=3 | keta
a店 1日目 103 75.7 62 ----
b店 1日目 211 155.1 113 ↑
c店 1日目 81 59.6 52 1日目の中での指数
d店 1日目 75 55.1 48 ↓
e店 1日目 210 154.4 140 ----
a店 2日目 157 113.6 94 ----
b店 2日目 237 171.5 121 ↑
c店 2日目 76 55.0 49 2日目の中での指数
d店 2日目 72 52.1 42 ↓
e店 2日目 149 107.8 91 ----
a店 3日目 62 76.7 30 ----
b店 3日目 150 185.6 82 ↑
c店 3日目 38 47.0 21 3日目の中での指数
d店 3日目 34 42.1 19 ↓
e店 3日目 120 148.5 73 ----
↑ 指数
例3
"+h" オプション
"+<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フィールド)の店別構成比を求めて売数の次の
フィールドに挿入します。
$ sisu +h val=3 data3 | keta
店 日付 売数 @ 客数 ← 追加フィールドは "@"
a店 1日目 103 75.7 62
b店 1日目 211 155.1 113
c店 1日目 81 59.6 52
d店 1日目 75 55.1 48
e店 1日目 210 154.4 140
↑ 指数
例4
"-<p>" オプション
-<数値> で指数の小数点以下の精度を指定できます。
売数(第3フィールド)の店別指数を小数点3桁まで求めます。
$ sisu -3 val=3 data | keta
a店 1日目 103 75.735 62
b店 1日目 211 155.147 113
c店 1日目 81 59.559 52
d店 1日目 75 55.147 48
e店 1日目 210 154.412 140
例5
補正オプション
丸めによって指数の合計が 100.0 * レコード数 にならない場合があります。
この場合に、差分を特定のレコードに加えて合計を 100.0 * レコード数 に
します。差分を加えるレコードは以下の通りです。
--first 先頭レコード
--last 最終レコード
--max 最大値レコード
--min 最小値レコード
--auto 最大値レコード(差分が正)または最小値レコード(差分が負)
$ sisu --first val=3 data | keta
a店 1日目 103 75.8 62 ← 補正レコード
b店 1日目 211 155.1 113
c店 1日目 81 59.6 52
d店 1日目 75 55.1 48
e店 1日目 210 154.4 140
$ sisu --last val=3 data | keta
a店 1日目 103 75.7 62
b店 1日目 211 155.1 113
c店 1日目 81 59.6 52
d店 1日目 75 55.1 48
e店 1日目 210 154.5 140 ← 補正レコード
$ sisu --max val=3 data | keta
a店 1日目 103 75.7 62
b店 1日目 211 155.2 113 ← 補正レコード
c店 1日目 81 59.6 52
d店 1日目 75 55.1 48
e店 1日目 210 154.4 140
$ sisu --min val=3 data | keta
a店 1日目 103 75.7 62
b店 1日目 211 155.1 113
c店 1日目 81 59.6 52
d店 1日目 75 55.2 48 ← 補正レコード
e店 1日目 210 154.4 140
$ sisu --auto val=3 data | keta
a店 1日目 103 75.7 62
b店 1日目 211 155.2 113 ← 補正レコード
c店 1日目 81 59.6 52
d店 1日目 75 55.1 48
e店 1日目 210 154.4 140
(備考)
旧書式は sisu [ref=<ref>] key=<key> <file> です。
しばらくの間、旧書式もサポートされます。