「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
を初期化することもできます)。 0
へ BEGIN{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 を取得します。