Previous: mcount 行数カウント Up: コマンドリファレンス Next: m2cross 1対Nのクロス集計 MCMD2
MCMD2 : コマンドリファレンス : mcross クロス集計

3.14 mcross クロス集計

クロス集計を行う。 s=で指定した項目の値が項目名となるように横に展開され、 k=で指定した値が行idとなり、 f=で指定した項目がセルとして出力される。

書式

mcross f= s= [a=] [k=] [v=] [n=] [i=] [o=] [-assert_diffSize] [-assert_nullkey] [-assert_nullin] [-assert_nullout] [-nfn] [-nfno] [-x] [-q] [tmpPath=] [--help] [--helpl] [--version]

パラメータ

f=

ここで指定された項目の値がセルの値として出力される。

 

複数項目指定すると、複数行に展開される。

 

それら複数行を識別するための項目としてfld項目が出力され、

 

f=で指定した項目名が値として出力される。

 

このfldという項目名を変更したい場合はa=パラメータを使う。

s=

列項目名に展開する項目を指定する。

 

ここで指定された項目の値が項目名として出力される。

a=

f=で指定した項目名がデータとして展開される項目名を指定する。

 

省略した場合はfldという項目名で出力される。

k=

キー項目名リスト

 

ここで指定した項目を単位に横展開をおこなう。

v=

NULL値置換文字列

 

NULL値があった場合、v=パラメータで指定する置換文字列により、項目の値を置換する。

利用例

例1: 基本例

item項目を単位にdate項目を横に展開し、 quantity項目を出力する。

$ more dat1.csv
item,date,quantity,price
A,20081201,1,10
A,20081202,2,20
A,20081203,3,30
B,20081201,4,40
B,20081203,5,50
$ mcross k=item f=quantity s=date i=dat1.csv o=rsl1.csv
#END# kgcross f=quantity i=dat1.csv k=item o=rsl1.csv s=date
$ more rsl1.csv
item%0,fld,20081201,20081202,20081203
A,quantity,1,2,3
B,quantity,4,,5

例2: 元の入力データに戻す例

例1の出力結果を元に戻すには、同じくmcrossを以下のよう用いればよい。

$ more rsl1.csv
item%0,fld,20081201,20081202,20081203
A,quantity,1,2,3
B,quantity,4,,5
$ mcross k=item f=2008* s=fld a=date i=rsl1.csv o=rsl2.csv
#END# kgcross a=date f=2008* i=rsl1.csv k=item o=rsl2.csv s=fld
$ more rsl2.csv
item%0,date,quantity
A,20081201,1
A,20081202,2
A,20081203,3
B,20081201,4
B,20081202,
B,20081203,5

例3: 複数の値を出力

quantity,priceの2項目を出力する。

$ mcross k=item f=quantity,price s=date i=dat1.csv o=rsl3.csv
#END# kgcross f=quantity,price i=dat1.csv k=item o=rsl3.csv s=date
$ more rsl3.csv
item%0,fld,20081201,20081202,20081203
A,quantity,1,2,3
A,price,10,20,30
B,quantity,4,,5
B,price,40,,50

例4: 並びを逆順する例

横に展開する項目名の並びを逆順にする。

$ mcross k=item f=quantity,price s=date%r i=dat1.csv o=rsl4.csv
#END# kgcross f=quantity,price i=dat1.csv k=item o=rsl4.csv s=date%r
$ more rsl4.csv
item%0,fld,20081203,20081202,20081201
A,quantity,3,2,1
A,price,30,20,10
B,quantity,5,,4
B,price,50,,40

関連コマンド

mtra : 横展開するイメージは同じだが、mtraは1つのベクトル項目として出力する。

Previous: mcount 行数カウント Up: コマンドリファレンス Next: m2cross 1対Nのクロス集計 MCMD2