Previous: mselnum 数値範囲による行選択 Up: コマンドリファレンス Next: mselstr 文字列による行選択 MCMD2
MCMD2 : コマンドリファレンス : mselrand ランダムに行を選択

3.49 mselrand ランダムに行を選択

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: 基本例

一人の顧客につきランダムに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

例2: ランダムに一定割合の行を選択

一人の顧客につきランダムに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

例3: キー単位の選択

以下の例は、顧客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 : ランダム選択でなく、乱数項目を付け加える。

Previous: mselnum 数値範囲による行選択 Up: コマンドリファレンス Next: mselstr 文字列による行選択 MCMD2