Ich finde mich oft mit einer Datei wieder, die eine Nummer pro Zeile hat. Am Ende importiere ich es in Excel, um Dinge wie Median, Standardabweichung usw. anzuzeigen.
Gibt es unter Linux ein Befehlszeilenprogramm, um dasselbe zu tun? Normalerweise muss ich die durchschnittliche, mittlere, minimale, maximale und standardmäßige Abweichung ermitteln.
jp
, könnten auch an einem CLI-Dienstprogramm zum Erstellen von Plots interessiert sein .Antworten:
Dies ist ein Kinderspiel mit R. Für eine Datei, die so aussieht:
Benutze das:
Um dies zu bekommen:
-q
Flag unterdrückt die Startlizenzierung von R und hilft bei der Ausgabe-e
Flag teilt R mit, dass Sie einen Ausdruck vom Terminal übergebenx
ist imdata.frame
Grunde genommen ein Tisch. Es ist eine Struktur, die mehrere Vektoren / Datenspalten enthält, was etwas eigenartig ist, wenn Sie nur einen einzelnen Vektor einlesen. Dies hat Auswirkungen darauf, welche Funktionen Sie verwenden können.summary()
natürlich dazudata.frames
. Wennx
mehrere Felder vorhandensummary()
wären , würden die obigen beschreibenden Statistiken für jedes Feld bereitgestellt.sd()
kann jedoch immer nur ein Vektor gleichzeitig verwendet werden, weshalb ichx
für diesen Befehl indiziere (x[ , 1]
gibt die erste Spalte von zurückx
). Sie könnenapply(x, MARGIN = 2, FUN = sd)
die SDs für alle Spalten abrufen.quelle
sudo apt-get install r-base
st
unten Gedanken über die Installation des Formulars. Nicht im Zusammenhang mit diesem Kommentar, aber meinebrew install R
knapp eine Stunde auf einem MacBook Pro Mid 2015 10.12.5 2.5GHz i7 16GB mit Chrome, Atom und anderen geöffneten Apps. Das meiste davon wurde damit verbracht, einen gcc jit Patch mit dem Xcode CLT O_o zu erstellen, aber jetzt verwende ich gerne Teile dieser Antwort :)Verwenden von "st" ( https://github.com/nferraz/st )
Oder:
(HAFTUNGSAUSSCHLUSS: Ich habe dieses Tool geschrieben :))
quelle
brew install st
.st
sich auch darauf beziehen kannsimple terminal
.Für den Durchschnitt, den Median und die Standardabweichung können Sie verwenden
awk
. Dies ist in der Regel schneller alsR
Lösungen. Zum Beispiel wird der Durchschnitt wie folgt gedruckt:(
NR
ist eineawk
Variable für die Anzahl der Datensätze,$1
bedeutet das erste (durch Leerzeichen getrennte) Argument der Zeile ($0
wäre die gesamte Zeile, was auch hier funktionieren würde, aber im Prinzip weniger sicher wäre, obwohl es für die Berechnung wahrscheinlich nur wäre nehmen Sie das erste Argument sowieso) undEND
bedeutet , dass die folgenden Befehle ein, nachdem sie die gesamte Datei verarbeitet werden , ausgeführt werden (man auch hätte initialisiert ,a
um0
in einerBEGIN{a=0}
Erklärung)).Hier ist ein einfaches
awk
Skript, das detailliertere Statistiken bereitstellt (nimmt eine CSV-Datei als Eingabe, andernfalls ändert sie sichFS
):Es ist einfach, diesem Skript min / max hinzuzufügen, aber es ist genauso einfach,
sort
&head
/tail
:quelle
Ein weiteres Tool, das zur Berechnung von Statistiken und zur Verteilung von Ansichten im ASCII-Modus verwendet werden kann, ist ministat . Es ist ein Tool von FreeBSD, aber es ist auch für die beliebte Linux-Distribution wie Debian / Ubuntu gepackt. Oder Sie können es einfach herunterladen und aus Quellen erstellen - es sind nur ein C-Compiler und die C-Standardbibliothek erforderlich.
Anwendungsbeispiel:
quelle
Ja, es heißt Perl
und hier ist ein prägnanter Einzeiler:
Beispiel
Und der Befehl
quelle
Bedeuten:
Median:
Modus:
Diese Modusberechnung erfordert eine gerade Anzahl von Stichproben, aber Sie sehen, wie es funktioniert ...
Standardabweichung:
quelle
awk
undgawk
wichtig ist (da Plain Old Awk auf BSD dies nicht beinhaltetasort()
).Noch ein Tool: https://www.gnu.org/software/datamash/
Könnte häufiger verpackt sein (das erste Tool, das ich zumindest für nix vorverpackt fand)
quelle
Für alle Fälle gibt es
datastat
ein einfaches Programm für Linux, das einfache Statistiken über die Befehlszeile berechnet. Zum Beispiel,gibt den Durchschnittswert über alle Zeilen für jede Spalte von file.dat aus. Wenn Sie die Standardabweichung, Minimal-, Maximal- wissen müssen, können Sie die hinzufügen
--dev
,--min
und--max
Optionen auf.datastat
hat die Möglichkeit, Zeilen basierend auf dem Wert einer oder mehrerer "Schlüssel" -Spalten zu aggregieren. Zum Beispiel,erzeugt für jeden unterschiedlichen Wert in der ersten Spalte (den "Schlüssel") den Durchschnitt aller anderen Spaltenwerte, die unter allen Zeilen mit demselben Wert auf dem Schlüssel zusammengefasst sind. Sie können mehr Spalten als Schlüsselfelder verwenden (z. B. -k 1-3, -k 2,4 usw.).
Es ist in C ++ geschrieben, läuft schnell und mit geringem Speicherbedarf und kann gut mit anderen Tools wie z
cut
,grep
,sed
,sort
,awk
usw.quelle
cat
data_hacks
ist ein Python-Befehlszeilenprogramm für grundlegende Statistiken.Das erste Beispiel auf dieser Seite liefert die gewünschten Ergebnisse:
quelle
Sie können auch Clistats verwenden . Es ist ein hoch konfigurierbares Befehlszeilenschnittstellentool zum Berechnen von Statistiken für einen Strom von begrenzten Eingabenummern.
E / A-Optionen
Analyseoptionen
Statistikoptionen
HINWEIS: Ich bin der Autor.
quelle
Ich wollte dies in einer Shell-Pipeline tun, und es dauerte eine Weile, bis ich die richtigen Argumente für R gefunden hatte. Folgendes habe ich mir ausgedacht:
seq 10 | R --slave -e 'x <- scan(file="stdin",quiet=TRUE); summary(x)' Min. 1st Qu. Median Mean 3rd Qu. Max. 1.00 3.25 5.50 5.50 7.75 10.00
Die
--slave
Option "Lass (s) R so leise wie möglich laufen ... Es impliziert --quiet und --no-save." Die-e
Option weist R an, die folgende Zeichenfolge als R-Code zu behandeln. Die erste Anweisung liest vom Standard in und speichert, was in der Variablen "x" gelesen wird. Diequiet=TRUE
Option für diescan
Funktion unterdrückt das Schreiben einer Zeile, in der angegeben ist, wie viele Elemente gelesen wurden. Die zweite Anweisung wendet diesummary
Funktion anx
, die die Ausgabe erzeugt.quelle
quelle
Es gibt auch simple-r, das fast alles kann, was R kann, aber mit weniger Tastenanschlägen:
https://code.google.com/p/simple-r/
Um grundlegende beschreibende Statistiken zu berechnen, müsste man Folgendes eingeben:
Für jede Abweichung von Durchschnitt, Median, Min, Max und Standard wäre der Code:
Bekommt kein einfaches R!
quelle
Verwenden von xsv :
quelle
brew
aufgedeckten Abhängigkeiten. Ziemlich "schwer" für diese Funktionalität.Ein weiteres Tool: tsv-summarize aus den tsv-Dienstprogrammen von eBay . Min, Max, Mittelwert, Median und Standardabweichung werden unterstützt. Bestimmt für große Datenmengen. Beispiel:
Haftungsausschluss: Ich bin der Autor.
quelle
Auch die Self-Write- Statistiken (zusammen mit 'scut') sind ein Perl-Util, um genau das zu tun. Mit einem Strom von Zahlen auf STDIN gefüttert, versucht es, Nicht-Zahlen abzulehnen und gibt Folgendes aus:
Es kann auch eine Reihe von Transformationen für den Eingabestream durchführen und nur den schmucklosen Wert ausgeben, wenn Sie danach fragen. dh 'stats --mean' gibt den Mittelwert als unbeschrifteten Float zurück.
quelle