Previous: mrand 擬似乱数 Up: コマンドリファレンス Next: msed 正規表現による文字列置換 MCMD2
MCMD2 : コマンドリファレンス : mrjoin 参照ファイルの範囲条件による結合

3.45 mrjoin 参照ファイルの範囲条件による結合

範囲により参照ファイルの項目を結合(join)する。 r=パラメータで指定した項目値が、参照ファイル上にある範囲条件(項目値以上、次行の項目値未満)にマッチすればf=パラメータで指定した項目値を結合する。 より複雑な範囲条件で結合したければmnrjoinを使う。 範囲条件数が少なければmchgnumの利用を考えるとよい。

書式

mrjoin r= [k=] [K=] [R=] [f=] [-n] [-lo] [m=] [i=] [o=] [-assert_diffSize] [-assert_nullkey] [-assert_nullin] [-assert_nullout] [-nfn] [-nfno] [-x] [-q] [tmpPath=] [--help] [--helpl] [--version]

パラメータ

f=

結合する参照ファイル上の項目名リスト(複数項目指定可)。

 

省略するとK=で指定された項目以外の項目を全て結合する。

m=

参照ファイル名を指定する。

 

このパラメータが省略された時には標準入力が用いられる。(i=指定ありの場合)

r=

範囲比較される項目名[%n]

 

入力ファイル上の項目名を指定する。

 

ここでここで指定した項目(複数項目指定可)で並べ替えられた後、結合が行われる。

 

%nが指定されると、数値範囲として解釈し、指定がなければ文字列範囲として解釈する。

 

ここで指定する項目にNULL値があってはならない。NULL値があった場合の動作は不定である。

R=

参照ファイル上の範囲項目名。

 

省略時はr=パラメータと同名として扱われる。

k=

入力データ上の突き合わせる項目名リスト(複数項目指定可)

 

ここで指定した入力データの項目とK=パラメータで指定された 参照データの項目が同じ行の項目結合が行われる。

K=

参照データ上の突き合わせる項目名リスト(複数項目指定可)

 

ここで指定した参照データの項目とk=パラメータで指定された 入力データの項目が同じ行の項目結合が行われる。

 

参照データ上にk=パラメータで指定した入力データ上の 項目と同名の項目が存在する場合は指定する必要はない。

-n

参照データにない入力データをNULL値として出力するフラグ。

-lo

left open interval

 

R= パラメータで指定した範囲を左半開区間(より大きい~以下)と解釈する。

利用例

例1: 基本例

priceを範囲で 分類項目low、middle、highを結合する。

$ more dat1.csv
price
8
15
35
50
90
200
$ more ref1.csv
range,category
10,low
35,middle
80,high
100,
$ mrjoin r=price%n m=ref1.csv R=range f=category i=dat1.csv o=rsl1.csv
#END# kgrjoin R=range f=category i=dat1.csv m=ref1.csv o=rsl1.csv r=price%n
$ more rsl1.csv
price%0n,category
15,low
35,middle
50,middle
90,high

例2: 基本例2

$ mrjoin -lo r=price%n m=ref1.csv R=range f=category i=dat1.csv o=rsl2.csv
#END# kgrjoin -lo R=range f=category i=dat1.csv m=ref1.csv o=rsl2.csv r=price%n
$ more rsl2.csv
price%0n,category
15,low
35,low
50,middle
90,high

例3: 基本例3

$ mrjoin -n r=price%n m=ref1.csv R=range f=category i=dat1.csv o=rsl3.csv
#END# kgrjoin -n R=range f=category i=dat1.csv m=ref1.csv o=rsl3.csv r=price%n
$ more rsl3.csv
price%0n,category
8,
15,low
35,middle
50,middle
90,high
200,

例4: 商品別に異なる範囲を設定して結合

$ more dat2.csv
item,price
A,10
A,20
B,10
B,20
$ more ref2.csv
item,price,category
A,10,low
A,15,high
A,100,
B,10,low
B,35,high
B,100,
$ mrjoin k=item r=price%n m=ref2.csv f=category i=dat2.csv o=rsl4.csv
#END# kgrjoin f=category i=dat2.csv k=item m=ref2.csv o=rsl4.csv r=price%n
$ more rsl4.csv
item%0,price%1n,category
A,10,low
A,20,high
B,10,low
B,20,low

関連コマンド

mchgnum : 数値範囲を指定して値を置換/追加する。

mjoin : 数値範囲ではなく文字列一致による結合の場合はこのコマンドを使う。

mnrcommon : 結合ではなく選択する場合はこのコマンドを使う。

Previous: mrand 擬似乱数 Up: コマンドリファレンス Next: msed 正規表現による文字列置換 MCMD2