要因の3次相互作用頻度(V2 * V3 * V4)が5未満の場合にレコードを削除する方法。
生データ
ID V2 V3 V4
101 2012 5 1
101 2012 5 1
101 2012 5 1
101 2012 5 1
102 2010 12 2
102 2012 12 2
102 2012 12 2
102 2012 12 2
答え1
「V2」は2,000を超え、1より小さい列はないので、これらの列の積は所与のサンプルデータにおいて常に5より大きい。しかし:
awk '($2*$3*$4) > 5 { print } NR==1 { print }' /path/to/data
答え2
私は周波数の数学を知りませんが、awkが大好きです!以下は、テストファイル内の各レコードを繰り返し、数字に乗算し、比較して5より小さいことを確認するスクリプトです。 5未満の場合は印刷されません。それ以外の場合は印刷してください。
#!/usr/bin/awk -f BEGIN { print "ID V2 V3 V4 = PRODUCT"; } { TOTAL = int($1 * $2 * $3); if(TOTAL < 5) { # Don't print } else { print $1,"",$2,"",$3,"=",TOTAL; } }
答え3
同じ要因がIDを変更する可能性があるため、ファイルを2回読み取ることができます。まず、ファイルが何回あるかを計算し、各行をV2_V3_V4
再確認し、最初に大きいか等しい数だけを渡しますn
(この例では5)。
awk -vn=5 'NR==FNR{++z[$2"_"$3"_"$4];next};
FNR==1{print;next};z[$2"_"$3"_"$4]>=n' infile infile