GNU/Linux >> Linux の 問題 >  >> Linux

Linux で数値の統計を出力するコマンド ライン ユーティリティ

「st」の使用 (https://github.com/nferraz/st)

$ st numbers.txt
N    min   max   sum   mean  stddev
10   1     10    55    5.5   3.02765

または:

$ st numbers.txt --transpose
N      10
min    1
max    10
sum    55
mean   5.5
stddev 3.02765

(免責事項:このツールは私が作成しました :))


平均、中央値、および標準偏差については、awk を使用できます .これは通常、R よりも高速です。 ソリューション。たとえば、以下は平均を出力します:

awk '{a+=$1} END{print a/NR}' myfile

(NR awk です レコード数の変数、$1 行の最初の (スペースで区切られた) 引数を意味します ($0 ここでも機能しますが、原則として安全性は低くなりますが、計算ではおそらく最初の引数を取るだけです)および END ファイル全体を処理した後に次のコマンドが実行されることを意味します (a を初期化することもできます)。 0BEGIN{a=0} で ステートメント)).

これは単純な awk です より詳細な統計を提供するスクリプト (入力として CSV ファイルを受け取ります。それ以外の場合は FS を変更します) ):

#!/usr/bin/awk -f

BEGIN {
    FS=",";
}
{
   a += $1;
   b[++i] = $1;
}
END {
    m = a/NR; # mean
    for (i in b)
    {
        d += (b[i]-m)^2;
        e += (b[i]-m)^3;
        f += (b[i]-m)^4;
    }
    va = d/NR; # variance
    sd = sqrt(va); # standard deviation
    sk = (e/NR)/sd^3; # skewness
    ku = (f/NR)/sd^4-3; # standardized kurtosis
    print "N,sum,mean,variance,std,SEM,skewness,kurtosis"
    print NR "," a "," m "," va "," sd "," sd/sqrt(NR) "," sk "," ku
}

このスクリプトに最小値/最大値を追加するのは簡単ですが、sort をパイプするのは簡単です &head /tail :

sort -n myfile | head -n1
sort -n myfile | tail -n1

これは R で簡単です。次のようなファイルの場合:

1
2
3
4
5
6
7
8
9
10

これを使用:

R -q -e "x <- read.csv('nums.txt', header = F); summary(x); sd(x[ , 1])"

これを取得するには:

       V1       
 Min.   : 1.00  
 1st Qu.: 3.25  
 Median : 5.50  
 Mean   : 5.50  
 3rd Qu.: 7.75  
 Max.   :10.00  
[1] 3.02765
  • -q フラグは、R のスタートアップ ライセンスとヘルプの出力を抑制します
  • -e フラグは、端末から式を渡すことを R に通知します
  • x data.frame です -基本的にテーブル。これは、複数のベクトル/列のデータに対応する構造であり、単一のベクトルを読み取るだけの場合は少し独特です。これは、使用できる機能に影響します。
  • summary() などの関数 、当然 data.frames に対応します . x の場合 複数のフィールドがありました summary() それぞれについて上記の説明的な統計情報を提供します。
  • しかし sd() 一度に 1 つのベクトルしか取得できないため、x にインデックスを付けます そのコマンド (x[ , 1] x の最初の列を返します )。 apply(x, MARGIN = 2, FUN = sd) を使用できます すべての列の SD を取得します。

Linux
  1. Linuxコマンドラインで牛を飼う

  2. Linux での lpr コマンドの例

  3. Linux:コマンドラインから日付を設定

  1. Linuxコマンドラインに関する8つのヒント

  2. Linuxコマンドラインにアクセスしてください

  3. コマンドラインを使用してLinuxを再起動する方法

  1. Linux_Logo –LinuxディストリビューションのカラーANSIロゴを印刷するためのコマンドラインツール

  2. Linuxコマンドラインの歴史をマスターするための15の例

  3. Linux での awk コマンドの例