2010-11-09 17 views
6

Hay tantas cosas buenas que vienen con un moderno entorno de shell Unix que lo que necesito casi siempre está instalado en mi máquina o una descarga rápida; el problema es simplemente encontrarlo. En este caso, estoy tratando de encontrar operaciones estadísticas básicas.¿La mejor manera en el shell para hacer estadísticas básicas?

Por ejemplo, ahora mismo estoy creando prototipos de una aplicación basada en el rastreo. Gracias a wget y algunos otros regalos, ahora tengo unos cientos de miles de archivos. Así que puedo estimar el costo de hacer esto con miles de millones de archivos, me gustaría obtener la media y la mediana de los tamaños de archivo por encima de un cierto límite. Ej .:

% ls -l | perl -ne '@a=split(/\s+/); next if $a[4] <100; print $a[4], "\n"' > sizes 
% median sizes 
% mean sizes 

Claro, podría codificar mi propia mediana y la media bits en un poco de Perl o awk. Pero, ¿no hay ya algún paquete novato que haga esto y mucho más?

Respuesta

8

¿Se puede instalar R? Entonces littler y su comando r puede ayudar:

~/svn/littler/examples$ ls -l . | awk '!/^total/ {print $5}' 
87 
1747 
756 
988 
959 
871 
~/svn/littler/examples$ ls -l . | awk '!/^total/ {print $5}' | ./fsizes.r 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
    87  785  915  901  981 1750 

    The decimal point is 3 digit(s) to the right of the | 

    0 | 1 
    0 | 89 
    1 | 00 
    1 | 7 

~/svn/littler/examples$ cat fsizes.r 
#!/usr/bin/r -i 

fsizes <- as.integer(readLines()) 
print(summary(fsizes)) 
stem(fsizes) 

Esto es ejemplo que habíamos utilizado antes, por lo tanto, la función summary() que contiene median() y mean(), así como un ascii-art igual stem parcela R. Generalización para simplemente llamar a median() o mean() son, por supuesto, bastante sencillo.

+0

Gracias! Un rápido "sudo aptitude install littler" y me voy a las carreras. ¡Esto es genial! –

+0

¡Impresionante! Esa es * exactamente * la forma en que debía ser utilizada. Si tiene preguntas R, publique aquí debajo de la etiqueta [r] que es bastante animada. Y acabo de agregar la etiqueta [r] a su pregunta anterior, espero que no le importe. –

Cuestiones relacionadas