c=パラメータもしくはp=パラメータで指定した行数をランダムに選択する(非復元抽出)。 k=を指定した場合、同一キーの行から指定の行数をランダムに選択し、 また同時に-Bオプションを指定すると、キー単位で選択する。
乱数の生成にはメルセンヌ・ツイスター法を利用している (原作者のページ , boostライブラリ)。
mselrand c=|p= [k=] [S=] [u=] [-B] [i=] [o=] [-assert_diffSize] [-assert_nullkey] [-nfn] [-nfno] [-x] [-q] [tmpPath=] [--help] [--helpl] [--version]
c= |
各キーの値毎に選択する行数を指定する。 |
p=パラメータを指定しない場合の指定は必ず指定する必要がある。 |
|
p= |
各キーの値毎に選択する割合をパーセントで指定する。 |
c=パラメータを指定しない場合の指定は必ず指定する必要がある。 |
|
k= |
指定する項目(複数項目指定可)の値が同じ行から、一定行数ランダムに選択する。 |
S= |
同じ乱数の種は同じシーケンスの乱数をふる。 |
指定しない場合は、時刻に応じた異なる乱数の種が利用される。 |
|
指定可能な乱数の種(-2147483648〜2147483647) |
|
u= |
指定の条件に一致しない行を出力するファイル名を指定する。 |
-B |
キー単位選択 |
一人の顧客につきランダムに1行を選択する。
$ more dat1.csv 顧客,日付,金額 A,20081201,10 A,20081207,20 A,20081213,30 B,20081002,40 B,20081209,50 $ mselrand k=顧客 c=1 S=1 i=dat1.csv o=rsl1.csv #END# kgselrand S=1 c=1 i=dat1.csv k=顧客 o=rsl1.csv $ more rsl1.csv 顧客%0,日付,金額 A,20081201,10 B,20081002,40
一人の顧客につきランダムに50%の行を選択する。 また、それ以外の不一致データはoth2.csvというファイルに出力する。
$ mselrand k=顧客 p=50 S=1 u=oth2.csv i=dat1.csv o=rsl2.csv #END# kgselrand S=1 i=dat1.csv k=顧客 o=rsl2.csv p=50 u=oth2.csv $ more rsl2.csv 顧客%0,日付,金額 A,20081201,10 B,20081002,40 $ more oth2.csv 顧客%0,日付,金額 A,20081207,20 A,20081213,30 B,20081209,50
以下の例は、顧客A,B,C,Dの4人からランダムに2人を選ぶ。 顧客Dが選ばれると、顧客Dの行は全て出力される。
$ more dat2.csv 顧客,日付,金額 A,20081201,10 A,20081207,20 A,20081213,30 B,20081002,40 B,20081209,50 C,20081210,60 D,20081201,70 D,20081205,80 D,20081209,90 $ mselrand k=顧客 c=2 S=1 -B i=dat2.csv o=rsl3.csv #END# kgselrand -B S=1 c=2 i=dat2.csv k=顧客 o=rsl3.csv $ more rsl3.csv 顧客%0,日付,金額 C,20081210,60 D,20081201,70 D,20081205,80 D,20081209,90
msel : 正規乱数も使える。
mrand : ランダム選択でなく、乱数項目を付け加える。