UEC - UNIXを深く理解し、シェルプログラミングを極めるコミュニティサイト

- Tukubaiマニュアル
  - cgi-name(1)
  - check_attr_name(1)
  - check_need_name(1)
  - comma(1)
  - count(1)
  - ctail(1)
  - delf(1)
  - divsen(1)
  - getfirst(1)
  - getlast(1)
  - gyo(1)
  - han(1)
  - join0(1)
  - join1(1)
  - join2(1)
  - juni(1)
  - kasan(1)
  - keta(1)
  - keycut(1)
  - loopj(1)
  - loopx(1)
  - map(1)
  - marume(1)
  - mdate(1)
  - mime-read(1)
  - mojihame(1)
  - nameread(1)
  - plus(1)
  - rank(1)
  - ratio(1)
  - retu(1)
  - self(1)
  - sm2(1)
  - sm4(1)
  - sm5(1)
  - tarr(1)
  - tateyoko(1)
  - tcat(1)
  - unmap(1)
  - up3(1)
  - yarr(1)
  - ycat(1)
  - yobi(1)
  - ysum(1)
  - zen(1)
  - タグ形式(5)
  - ネーム形式(5)
  - フィールド形式(5)

# Tukubaiオンラインコマンドマニュアル

## ratio(USP Lab(1))

### 【名前】

ratio : 構成比算出

### 【書式】

    Usage	: ratio key=<key> <file>
    Option	: ref=<ref>		←参照キーの指定
    	: -<s>			←小数点以下の精度
    	: +<n>h			←先頭<n>行をヘッダーとみなす
    Version	: Thu Dec 15 13:46:38 JST 2011

### 【説明】

引数のファイルまたは標準入力のテキストデータに対し、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
    $

### 【関連項目】

kasan(USP Lab(1))、plus(USP Lab(1))、sm2(USP Lab(1))、sm4(USP Lab(1))、sm5(USP Lab(1))、ysum(USP Lab(1))

- ∧

last modified: 2012-04-12 20:24:42