GNU/Linux >> Belajar Linux >  >> Linux

utilitas baris perintah untuk mencetak statistik angka di linux

Menggunakan "st" (https://github.com/nferraz/st)

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

Atau:

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

(PENAFIAN:Saya menulis alat ini :))


Untuk deviasi rata-rata, median &standar, Anda dapat menggunakan awk . Ini umumnya akan lebih cepat dari R solusi. Misalnya, berikut ini akan mencetak rata-rata :

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

(NR adalah awk variabel untuk jumlah record, $1 berarti argumen pertama (dipisahkan spasi) dari baris ($0 akan menjadi keseluruhan baris, yang juga akan berfungsi di sini tetapi pada prinsipnya akan kurang aman, meskipun untuk perhitungan mungkin hanya akan menggunakan argumen pertama) dan END berarti bahwa perintah berikut akan dijalankan setelah memproses seluruh file (seseorang juga dapat menginisialisasi a ke 0 dalam BEGIN{a=0} pernyataan)).

Ini adalah awk sederhana skrip yang memberikan statistik lebih detail (mengambil file CSV sebagai masukan, jika tidak, ubah 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
}

Sangat mudah untuk menambahkan min/max ke skrip ini, tetapi semudah mem-pipe sort &head /tail :

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

Ini sangat mudah dengan R. Untuk file yang terlihat seperti ini:

1
2
3
4
5
6
7
8
9
10

Gunakan ini:

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

Untuk mendapatkan ini:

       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 tandai squelches R's startup license dan help output
  • -e flag memberi tahu R bahwa Anda akan meneruskan ekspresi dari terminal
  • x adalah data.frame - meja, pada dasarnya. Ini adalah struktur yang mengakomodasi banyak vektor/kolom data, yang sedikit aneh jika Anda hanya membaca dalam satu vektor. Hal ini berdampak pada fungsi yang dapat Anda gunakan.
  • Beberapa fungsi, seperti summary() , secara alami mengakomodasi data.frames . Jika x memiliki banyak kolom, summary() akan memberikan statistik deskriptif di atas untuk masing-masing.
  • Tapi sd() hanya dapat mengambil satu vektor pada satu waktu, itulah sebabnya saya mengindeks x untuk perintah itu (x[ , 1] mengembalikan kolom pertama x ). Anda dapat menggunakan apply(x, MARGIN = 2, FUN = sd) untuk mendapatkan SD untuk semua kolom.

Linux
  1. 8 tips untuk baris perintah Linux

  2. Contoh Perintah awk di Linux

  3. Linux:tetapkan tanggal melalui baris perintah

  1. Miliki sapi di baris perintah Linux

  2. Masukkan diri Anda ke dalam baris perintah Linux

  3. Cara Reboot Linux Menggunakan Command Line

  1. Linux_Logo – Alat Baris Perintah untuk Mencetak Logo ANSI Berwarna dari Distribusi Linux

  2. 15 Contoh Untuk Menguasai Sejarah Baris Perintah Linux

  3. Contoh Perintah lpr di Linux