Для среднего, среднего и стандартного отклонения вы можете использовать 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