¿Existe alguna herramienta de línea de comandos que acepte el flujo de números (en formato ascii) de la entrada estándar y proporcione las estadísticas descriptivas básicas para este flujo, como min, max, average, median, RMS, quantiles, etc. La salida se puede analizar con el siguiente comando en la cadena de línea de comandos. El entorno de trabajo es Linux, pero otras opciones son bienvenidas.
27
Respuestas:
Puedes hacer esto con R , que puede ser un poco exagerado ...
EDIT 2: [OOPS, parece que alguien más golpeó con Rscript mientras estaba volviendo a escribir esto.] Encontré una manera más fácil. Instalado con R debe estar Rscript, que está destinado a hacer lo que está tratando de hacer. Por ejemplo, si tengo un archivo
bar
que tiene una lista de números, uno por línea:Canalizará esos números en R y ejecutará el
summary
comando de R en las líneas, devolviendo algo como:También podrías hacer algo como:
para obtener cuantiles. Y, obviamente, podría cortar la primera línea de salida (que contiene etiquetas) con algo como:
Recomiendo encarecidamente hacer lo que quiera en R interactivo primero, para asegurarse de que tiene el comando correcto. Al intentar esto, omití el paréntesis de cierre y Rscript no devuelve nada: ningún mensaje de error, ningún resultado, simplemente nada.
(Para el registro, la barra de archivos contiene:
fuente
R
comandos?foo
que contenía elsummary (as.numeric (readLines()))
como su primera línea, luego un elemento de datos numéricos por línea para el resto del archivo. ElreadLines()
solo está leyendo desde stdin (que es todo lo que sigue, hasta el final del archivo).R
ambas respuestas, y parece ser una gran herramienta para una tarea pequeña. Bueno, las respuestas funcionan, pero de todos modos, ¿hay algo más exceptoR
?scipy
, especialmente si ya usa Python. Si usa / like Clojure (lisp basado en JVM, clojure.org ), existe el entorno estadísticoIncanter
( incanter.org ) construido sobre eso. También puedes probar gnu Octave.Prueba "st":
También puede ver el resumen de cinco números:
Puedes descargarlo aquí:
https://github.com/nferraz/st
(RENUNCIA: Escribí esta herramienta :))
fuente
st
está disponible a través de Homebrewbrew install st
st
también puede hacer referencia asimple terminal
.R proporciona un comando llamado Rscript . Si solo tiene unos pocos números que puede pegar en la línea de comando, use este único delineador:
lo que resulta en
Si desea leer desde la entrada estándar, use esto:
Si el número en la entrada estándar está separado por retornos de carro (es decir, un número por línea), use
Se pueden crear alias para estos comandos:
fuente
read.table
idea es una buena manera de moverse por un artículo por línea.Datamash es otra gran opción. Es del Proyecto GNU.
Si tienes homebrew / linuxbrew puedes hacer:
brew install datamash
fuente
También hay simple-r, que puede hacer casi todo lo que R puede, pero con menos pulsaciones de teclas:
https://code.google.com/p/simple-r/
Para calcular estadísticas descriptivas básicas, uno tendría que escribir uno de:
¡No tiene ningún R simple!
fuente
Hay sta, que es una varianza c ++ de st, también mencionada en estos comentarios.
Al estar escrito en c ++, es rápido y puede manejar grandes conjuntos de datos. Es fácil de usar, incluye la elección de estimadores imparciales o sesgados, y puede generar información más detallada, como un error estándar.
Puedes descargar sta en github .
Descargo de responsabilidad: soy el autor de sta .
fuente
Por si acaso, hay datastat
https://sourceforge.net/p/datastat/code/
Un programa simple para Linux que computa estadísticas simples desde la línea de comandos. Por ejemplo,
cat file.dat | datastat
generará el valor promedio en todas las filas para cada columna de file.dat. Si necesita conocer la desviación estándar, min, max, puede agregar las opciones --dev, --min y --max, respectivamente.
datastat tiene la posibilidad de agregar filas en función del valor de una o más columnas "clave".
Está escrito en C ++, se ejecuta rápido y con poca ocupación de memoria, y se puede canalizar muy bien con otras herramientas como cortar, grep, sed, sort, awk, etc.
fuente
También podría considerar usar clistats . Es una herramienta de interfaz de línea de comandos altamente configurable para calcular estadísticas para una secuencia de números de entrada delimitados.
Opciones de E / S
Opciones de análisis
Opciones de estadísticas
NOTA: soy el autor.
fuente
Una herramienta que podría usarse para calcular estadísticas y ver la distribución en modo ASCII es ministat . Es una herramienta de FreeBSD, pero también está empaquetada para una distribución popular de Linux como Debian / Ubuntu.
Ejemplo de uso:
fuente
Demasiada memoria y potencia de procesador, amigos. Usar R para algo como esto es más o menos como conseguir un mazo para matar un mosquito. Use su idioma favorito e implemente un algoritmo de medios provisionales. Por el medio:
TomarX¯0 0= S0 0= 0 como valores iniciales Las modificaciones están disponibles para análisis ponderados. Puede hacer los cálculos con dos reales de doble precisión y un contador.
fuente
FLOAT_MAX-1.0
ao conTropecé con este viejo hilo buscando algo más. Quería lo mismo, no podía encontrar nada simple, así que lo hice en perl, bastante trivial, pero úsalo varias veces al día: http://moo.nac.uci.edu/~hjm/stats
ejemplo:
(Scut es una versión más lenta, pero posiblemente más fácil de cortar): http://moo.nac.uci.edu/~hjm/scut describe: http://moo.nac.uci.edu/~hjm/scut_cols_HOWTO. html
fuente
Otra herramienta: tsv-summary de de TSV Utilities eBay . Admite muchas de las estadísticas de resumen básicas, como mín., Máx., Media, mediana, cuantiles, desviación estándar, MAD y algunas más. Está destinado a grandes conjuntos de datos y admite múltiples campos y agrupaciones por clave. La salida está separada por tabuladores. Un ejemplo para la secuencia de números del 1 al 1000, uno por línea:
Los encabezados normalmente se generan a partir de una línea de encabezado en la entrada. Si la entrada no tiene encabezado, se puede agregar uno usando
-w
interruptor:Descargo de responsabilidad: soy el autor.
fuente