uspTukubaiコマンドに関する様々な資料がここにあります。

 

 

魂内検索

DOCUMENTS

COMMAND

FORUM

UEC DOCS

VIDEO

 

ABC順リスト |  カテゴリ別リスト

(動画教材準備中)

sisu

概要

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

説明

引数のファイル又は標準入力のテキストデータの "key=" で指定したフィー
ルドについて、全レコード(行)の合計に占める各フィールドの値の指数を
算出し、その次のフィールドに挿入して出力します。


例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> です。
しばらくの間、旧書式もサポートされます。