Lesson 12 その他のコマンド

 この章ではこれからMコマンドを使って分析する上で必要と思われるコマンドのいくつかを取り上げていく。ここからは各コマンドの詳しい説明は省略する。詳しく知りたい人は、“Mコマンド一覧(機能分類orコマンド名順)”の説明を読むか、知ってる人に聞くかして欲しい。

 顧客の平均単価を求める(mavg)

 平均〜を求める場合、Lesson10で学習した四則演算(mdiv)を使うよりはmavgを使ったほうがいい。下にmavgを使用したバッチを載せておくので参考にしてほしい。
 

gunzip -c /home/practice/Mine/Data/StoreMaster1/Dat/Dat.gz               |\
mcut f=8,2,13                     |\
sort                                   |\
msum k=1,2 f=3                  |\
mcut f=1,3                         |\
mavg k=1 f=2                      >Dat/dat 

 顧客の初回来店日をだす(muniqt)

 顧客の初回来店日を求めるのには顧客が商品を購入した日付の一番古いデータが必要となる。そこでmuniqtを使用する。muniqtとはkeyで指定した項目値の同じ物が複数あるとその一番上の行だけを取ってくるコマンドである。
 

gunzip -c /home/practice/Mine/Data/StoreMaster1/Dat/Dat.gz    |\
mdeinul field=8                         |\
mcut field=8,2                          |\
sort                                        |\
muniqt key=1                           >dat12-2
 なお、今回使用したコマンド“muniqt”とは逆の働きをするのがmuniqbである。上の処理の場合、muniqtをmuniqbに変えると初回来店日ではなく、最終来店日を求めることになる。

 顧客の来店回数をだす(mcount)

 mcountはkeyで指定した項目の値が同じ行の件数を計算するものなので、ここでの“顧客の来店回数”を求めるためにmcountを使用している。例えば“顧客の商品Aの購入回数”を出すのにもmcountを使用すればよい。
 

gunzip -c /home/practice/Mine/Data/StoreMaster1/Dat/Dat.gz    |\
mdeinul field=8                         |\
mcut field=8,2                          |\
sort                                        |\
mcount key=1                          |\

 顧客別来店間隔日数を出す(mslide,mday

 ここでは来店間隔日数を出してみる。ではなぜ、来店間隔日数が必要になるのか。それは各顧客の来店間隔日数を知ることによって顧客の次回来店を予測することができる。帳票を下に表示しておくので参考にしてもらいたい。
 
echo '顧客別来店間隔日数'           >xxtitle
echo 'Lesson12にて作成'             >>xxtitle
date                                >>xxtitle
echo ': 顧客コード: 来店間隔日数:'  >xxfield

gunzip -c /home/practice/Mine/Data/StoreMaster1/Dat/Dat.gz   |\
mdelnul field=8                        |\
mcut field=8,2                         |\
sort                                       |\
mslide key=1  field=2                |\
mday field1=3 field2=2              |\
mcut field=1,4                         |\
mdelnul field=2                        |\
mlist2 field=xxfield title=xxtitle  >dat12-4 

結果を見ると各顧客の来店間隔日数が出ていることが確認できるだろう。

 また、mdayと似た働きを持つコマンド(日付時間系)としてmwdaymweekがある。これらのコマンドの説明についてもMコマンド一覧を参考にしてほしい。
 

 項目の追加(msetfilemsetchr)

 ここでは項目の追加について説明する。機能分類としてmsetfileは「項目結合」、msetchrは「新項目」に属する。この2つのコマンドの違いとして、msetfileはfileで指定したファイルの先頭行を新しい項目として追加する。但し、追加する項目はfileで指定したファイルに複数行数あったとしても、先頭行のみが対象となり、その他の内容は無視される。それに対し、msetchrはvalueで指定した値を新しい項目として追加する。valueで指定した値は文字列の扱いになる。valueで指定した値は数値としての文字列でもいいし、ひらがな、漢字などの文字でもいい。詳しい説明はMコマンド一覧を参照するように。
 

 ・ここまでMコマンドを学習してきた中でmsel〜もしくはmdel〜という名で出てきていた。msel〜とmdel〜は反対の意味を持つと考えてもらえばいい。例として、mselnulはnull値“*”を含む行の選択に対し、mdelnulはnull値“*”を含む行の除外選択である。ここで、いままでに出てきたコマンドで反対の意味を持つコマンドを紹介しておこう。

 mselstr←→mdelstr

 mselnum←→mdelnum

 mselkeystr←→mdelkeystr

 mselnul←→mdelnul

 mcut←→mcutdel

 ここで紹介した物以外にもまだmsel〜、mdel〜のコマンドはある。残りのコマンドはMコマンド一覧を参照してほしい。