Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【awk】便利ワンライナーコマンドまとめ記事を見つけた

■ 参考 : 統計屋のためのAWK入門

ここの「AWKでなんか色々統計処理をやってみた」というsectionにワンライナーでコマンドがまとめられてる

以前から使ってる別のワンライナーコマンドをまとめたページも貼ろうと思ったけど、
記事が別の場所に移動して怪しかったのでやめた

分散と標準偏差が便利
ダブルコーテーションじゃなくてバッククオートじゃないといけなかった

# 平均
awk '{sum+=$1}END{print sum/NR}' hoge.txt

# 分散
awk '{d[NR]=$1;avg+=$1}END{a=avg/NR;for(i in d)s+=(d[i]-a)^2;print s/(NR-1)}' hoge.txt

# 標準偏差
awk '{d[NR]=$1;avg+=$1}END{a=avg/NR;for(i in d)s+=(d[i]-a)^2;print sqrt(s/(NR-1))}' hoge.txt

あとで気づいたけど、これ"あんちべ"さんだ・・・




別の記事に艦これの加賀さんが出て来ていたのでメモメモ

■ 面白い記事 : 自然言語処理の最新手法"word2vec"で艦これ加賀さんから乳を引いてみる



# シャッフルを用いた重複なしランダムサンプリング
awk 'BEGIN{srand()} {line[NR] = $0} END{for(;i<100000;i++){r=1+int(rand()*NR);s=1+int(rand()*NR);tmp=line[r];line[r]=line[s];line[s]=tmp};for(t in line)print line[t]}' hoge.txt | awk "NR <= 100"
これで100000回並べ替えを行って、そこから先頭の100個のデータを抽出できる
元のソースコードは上記と同じリンク

srandは現在の時刻から初期シードを生成して、乱数生成を行うので
1秒以内に同じコードを実行するとまったく同じ結果になってしまう

この処理を何度も行うときはsleep 2とかを間に挟んだ方が良い


ランキング参加中です

↓クリックしていただけると嬉しいです〜