Apakah ada alat baris perintah yang menerima aliran angka (dalam format ascii) dari input standar dan memberikan statistik deskriptif dasar untuk aliran ini, seperti min, maks, rata-rata, median, RMS, kuantil dll? Outputnya dapat diuraikan oleh perintah berikutnya dalam rantai baris perintah. Lingkungan kerja adalah Linux, tetapi opsi lain dipersilahkan.
27
Jawaban:
Anda dapat melakukan ini dengan R , yang mungkin sedikit berlebihan ...
EDIT 2: [OOPS, sepertinya orang lain memukul dengan Rscript ketika saya mengetik ulang ini.] Saya menemukan cara yang lebih mudah. Dipasang dengan R haruslah Rscript, yang dimaksudkan untuk melakukan apa yang Anda coba lakukan. Misalnya, jika saya memiliki file
bar
yang memiliki daftar angka, satu per baris:Akan menyalurkan angka-angka itu ke R dan menjalankan
summary
perintah R di baris, mengembalikan sesuatu seperti:Anda juga dapat melakukan sesuatu seperti:
untuk mendapatkan kuantil. Dan Anda jelas dapat memotong baris pertama dari output (yang berisi label) dengan sesuatu seperti:
Saya sangat merekomendasikan melakukan apa yang Anda inginkan dalam interaktif R terlebih dahulu, untuk memastikan Anda memiliki perintah yang benar. Dalam mencoba ini, saya meninggalkan tanda kurung penutup dan Rscript tidak menghasilkan apa-apa - tidak ada pesan kesalahan, tidak ada hasil, hanya tidak ada.
(Sebagai catatan, bilah file berisi:
sumber
R
perintah itu?foo
yang berisisummary (as.numeric (readLines()))
baris pertama, lalu satu item data numerik per baris untuk sisa file. ItureadLines()
hanya membaca dari stdin (yang semuanya mengikuti, sampai akhir file).R
dalam kedua jawaban, dan tampaknya menjadi alat yang sangat besar untuk tugas kecil. Nah, jawaban bekerja, tapi tetap, ada sesuatu yang lain kecualiR
?scipy
, terutama jika Anda sudah menggunakan Python Jika Anda menggunakan / suka Clojure (lisp berdasarkan JVM, clojure.org ), ada lingkungan statistikIncanter
( incanter.org ) yang dibangun di atasnya . Anda juga dapat mencoba gnu Octave.Coba "st":
Anda juga dapat melihat ringkasan nomor lima:
Anda dapat mengunduhnya di sini:
https://github.com/nferraz/st
(PENOLAKAN: Saya menulis alat ini :))
sumber
st
tersedia melalui Homebrewbrew install st
st
mungkin juga merujuk kesimple terminal
.R menyediakan perintah yang disebut Rscript . Jika Anda hanya memiliki beberapa angka yang dapat Anda tempel di baris perintah, gunakan liner satu ini:
yang mengakibatkan
Jika Anda ingin membaca dari input standar gunakan ini:
Jika nomor pada input standar dipisahkan oleh carriage return (yaitu satu nomor per baris), gunakan
Seseorang dapat membuat alias untuk perintah-perintah ini:
sumber
read.table
Ide Anda adalah cara yang baik untuk berkeliling satu item per baris.datamash adalah pilihan bagus lainnya. Ini dari Proyek GNU.
Jika Anda memiliki homebrew / linuxbrew yang dapat Anda lakukan:
brew install datamash
sumber
Ada juga simple-r, yang dapat melakukan hampir semua hal yang dapat dilakukan R, tetapi dengan sedikit penekanan tombol:
https://code.google.com/p/simple-r/
Untuk menghitung statistik deskriptif dasar, seseorang harus mengetikkan salah satu dari:
Tidak mendapatkan R-sederhana!
sumber
Ada sta, yang merupakan varian c ++ st, juga dirujuk dalam komentar ini.
Ditulis dalam c ++, cepat dan dapat menangani dataset besar. Ini mudah digunakan, termasuk pilihan estimator yang tidak bias atau bias, dan dapat menampilkan informasi yang lebih rinci seperti kesalahan standar.
Anda dapat mengunduh sta di github .
Penafian: Saya penulis sta .
sumber
Untuk jaga-jaga, ada datastat
https://sourceforge.net/p/datastat/code/
sebuah program sederhana untuk Linux yang menghitung statistik sederhana dari command-line. Sebagai contoh,
cat file.dat | datastat
akan menampilkan nilai rata-rata di semua baris untuk setiap kolom file.dat. Jika Anda perlu mengetahui standar deviasi, min, maks, Anda dapat menambahkan opsi --dev, --min dan --max.
datastat memiliki kemungkinan untuk mengagregasi baris berdasarkan nilai satu atau lebih kolom "kunci".
Ini ditulis dalam C ++, berjalan cepat dan dengan pekerjaan memori kecil, dan dapat disalurkan dengan baik dengan alat lain seperti memotong, grep, sed, mengurutkan, awk, dll.
sumber
Anda mungkin juga mempertimbangkan untuk menggunakan clistats . Ini adalah alat antarmuka baris perintah yang sangat dapat dikonfigurasi untuk menghitung statistik untuk aliran nomor input yang dibatasi.
Opsi I / O
Opsi parsing
Opsi statistik
CATATAN: Saya penulis.
sumber
Ya alat yang dapat digunakan untuk menghitung statistik dan melihat distribusi dalam mode ASCII adalah ministat . Ini adalah alat dari FreeBSD, tetapi juga dikemas untuk distribusi Linux populer seperti Debian / Ubuntu.
Contoh penggunaan:
sumber
sumber
FLOAT_MAX-1.0
Tersandung di thread lama ini mencari sesuatu yang lain. Menginginkan hal yang sama, tidak dapat menemukan sesuatu yang sederhana, begitu juga dalam perl, cukup sepele, tetapi menggunakannya beberapa kali sehari: http://moo.nac.uci.edu/~hjm/stats
contoh:
(scut lebih lambat, tetapi bisa dibilang lebih mudah untuk versi cut): http://moo.nac.uci.edu/~hjm/scut dijelaskan: http://moo.nac.uci.edu/~hjm/scut_cols_HOWTO. html
sumber
Alat lain: ringkasan-tsv dari TSV Utilities eBay . Mendukung banyak statistik ringkasan dasar, seperti min, maks, rata-rata, median, kuantil, standar deviasi, MAD, dan beberapa lainnya. Ini dimaksudkan untuk kumpulan data besar dan mendukung berbagai bidang dan pengelompokan berdasarkan kunci. Output dipisahkan tab. Contoh untuk urutan angka 1 hingga 1000, satu per baris:
Header biasanya dihasilkan dari baris header di input. Jika input tidak memiliki header, dapat ditambahkan menggunakan
-w
sakelar:Penafian: Saya penulis.
sumber