Ejercicios de TIplE
Índice
1. Días 1 y 2: Ubuntu
- Crea una carpeta llamada
informes
dentro de tu carpeta personal. Mediante el procesador de texto de LibreOffice, crea un documento llamado
informe-ubuntu
(LibreOffice le añadirá la extensión.odt
por omisión) y guárdalo en la carpetainformes
.El documento debe contener la ecuación: \(\Gamma(\alpha) = \psi_\beta.\Delta^\omega\)
Prueba a incluir también
- fórmulas más complejas
- una tabla
- una lista numerada
- una lista no numerada
- un título
- una cabecera y un pie de página
- un texto en cursiva, otro en negrita y otro
monoespaciado
- diversos colores de texto y colores de fondo
- Prueba una sustitución global (por ejemplo, cambia todas las comas
por punto y coma) mediante
Edit
/Find and Replace
. - Exporta el documento a PDF (se creará un documento llamado
informe-ubuntu.pdf
en la carpetainformes
). - Crea una carpeta llamada «
.secreta
» dentro de tu carpeta personal. - Mueve el fichero editable
informe-ubuntu.odt
a.secreta
. - Localiza en el buscador el editor de imágenes GIMP. Arrastra su icono hasta fijarlo en el panel de la izquierda (lanzador). Luego, pulsa sobre el icono con el botón derecho y elige «No mantener en el lanzador» para eliminar el icono.
- Descarga el escudo de la universidad de la dirección
(o busca «escudo uniovi» y elige uno en formato PNG).
- Abre dicho escudo con Gimp y modifícalo (por ejemplo, con la
herramienta de selección rectangular selecciona alguna parte
y elimínala con
Editar
/Cortar
; o ve aImagen
/Autorecortar imagen
). - Guarda el fichero en la carpeta
informes
. Se guardará con la extensión.xcf
que guarda todos los elementos del proceso de edición de la imagen (capas, textos…). - Exporta el fichero a la carpeta
.secreta
, con formato.jpg
. Abre desde Nautilus, con el Visor de Imágenes, el nuevo fichero creado. Puedes comprobar que ya no es trasparente y (si no escogiste calidad 100%) que, al ampliarlo, se ven algunos defectos). - En el documento
informe-ubuntu.odt
inserta el escudo de la universidad en la cabecera, con un tamaño más o menos adecuado. - Vuelve a exportar el documento a formato PDF a la carpeta
informes
. - Carga el archivo
paises.ods
de http://bellman.ciencias.uniovi.es/~carleos/master/manadine/curso1/TIplE/ejercicios/datos y explora las definiciones de referencias relativas y absolutas en http://bellman.ciencias.uniovi.es/~carleos/master/manadine/curso1/TIplE/apuntes/libreoffice-calc/practica1-217.odt. - Calcula el total mundial de población.
- Calcula la extensión de cada país en quilómetros cuadrados.
Abre una nueva hoja en
paises.ods
y crea la siguiente tabla:tasa de I.V.A. = 16 % PRECIO sin I.V.A. PRECIO con I.V.A. 200 115 2200 30 - Crea fórmulas para calcular los precios con IVA, haciendo uso del valor almacenado en la celda con el 16. Cambia la tasa de 16 a 21, de forma que todos los precios con IVA se actualicen automáticamente.
- Calcula el P.I.B. percápita por país y el global.
- Calcula el consumo de calorías medio global.
2. Días 3 al 7: GNU bash y GNU coreutils
- Localiza dónde se encuentra el fichero llamado «sources.list» y muestra su contenido.
- Busca en
carleos2.epv.uniovi.es
todos los ficheros.pdf
del directorio/tmp/ROK
Crea en tu carpeta personal la siguiente estructura de directorios:
+-----+ | ~ | +-----+ | | +-------+ +------+ | | v v +---------+ +--------+ |Descargas| |Imágenes| +---------+ +--------+ | | | | V V V V +------+ +-----+ +---+ +---+ |libros| |pelis| |JPG| |PNG| +------+ +-----+ +---+ +---+
- Consigue una serie de imágenes en formato JPG (por ejemplo, las de la final en Badajoz de la Incubadora de Sondeos y Experimentos) y colócalas en la carpeta «JPG».
- Mediante un bucle «for», conviértelas al formato PNG, de forma que los ficheros PNG resultantes
acaben en la carpeta «PNG». La orden para convertir
imagen.jpg
enimagen.png
esconvert imagen.jpg imagen.png
. - La orden
wc
permite contar renglones, palabras y caracteres de un fichero de texto. En la carpeta datos tienes un fichero llamadovacas.csv
. Cuenta cuántos registros contiene ayudándote dewc
. Luego carga el fichero en Libreoffice Calc y comprueba el resultado. En la misma carpeta está el fichero pisa2012.csv.gz. El sufijo
.gz
indica que está comprimido. Puedes descomprimirlo con el comandogunzip pisa2012.csv.gz
, con lo que se convierte en un fichero de texto normal y corriente.- ¿Cuántos registros contiene?
- ¿Cuántas variables? Ten en cuenta las órdenes
head
ytr
; pueden ser útiles (considera las opciones-n 1
parahead
y-c
y-d
paratr
).
Si no quieres descomprimir un fichero físicamente, sino sólo usarlo al vuelo, puedes usar
zcat
. Por ejemplo:zcat pisa2012.csv.gz | wc
Compara los resultados de las siguientes órdenes e intenta averiguar la razón:
time zcat pisa2012.csv.gz | wc time zcat pisa2012.csv.gz | wc -l
Intenta averiguar qué hace esta orden:
zcat pisa2012.csv.gz | cut -d',' -f1 | uniq -c | sort -n
Ídem:
zcat piso2012.csv.gz | head -n 1 > /tmp/muestra.csv zcat piso2012.csv.gz | tail -n +2 | shuf -n 100 >> /tmp/muestra.csv
- Obtén un fichero
/tmp/muestra-es.csv
que contenga los registros de PISA relacionados con España (CNT=ESP). Averigua qué hace esta instrucción explorando cada tubo:
cat /usr/share/common-licenses/GPL|tr ' ' '\n'|sort|uniq -c|sort -n
- Mete en el tubo una instrucción para convertir mayúsculas a minúsculas.
- Ídem para eliminar todos los símbolos que no sean letras minúsculas.
- Intenta hacer lo mismo con los ficheros
texto1
…texto4
sitos en bellman.ciencias.uniovi.es. Para quitar acentos, tendrás que meter en el tubo la ordeniconv
órecode
.
Obtengamos el código fuente de un paquete de Ubuntu, por ejemplo así:
apt-get source r-cran-rcmdr
Metámonos en el directorio con las fuentes:
ls -lrt cd rcmdr-2.0-3
¿Cuántos ficheros hay? ¿Cuántos son de código fuente R? ¿Cuántos renglones supone el código fuente de R? ¿Cuántas definiciones de funciones de R hay? Una definición debe contener algo como «
<- function (
»- Obtén las frecuencias de los sexos en el fichero
vacas.csv
, en la terminal y en R - Obtén los municipios más frecuentes en el fichero
vacas.csv
, en la terminal y en R. Halla en qué se diferencian los ficheros
vacas.csv
yvacas0.csv
mediante el comandodiff
(pista: se ha usadocat vacas.csv | sed 's/;;/;0;/g' | sed 's/;;/;0;/g' > vacas0.csv
para crear el fichero
vacas0.csv
; ¿por qué se repetirá elsed
?).A partir de la información de esta página y este directorio intenta averiguar qué hace esta orden:
for i in $(seq 1987 2008); do wget http://bellman.ciencias.uniovi.es/~carleos/master/manadine/curso1/TIplE/ejercicios/datos/vuelos/$i.csv.bz2; done
- En la misma carpeta que
vacas.csv
está el fichero vuelos.csv.gz. Su contenido está descrito en http://stat-computing.org/dataexpo/2009/the-data.html- ¿Cuántos registros contiene? (intenta hacerlo lo más rápido posible)
- ¿Cuántas variables?
- ¿Cuántos registros se refieren al aeropuerto internacional de la capital de Iowa? (Pista: halla el código de su aeropuerto.)
- Visita la página del I.N.E.
- Pincha a la izquierda en el menú de navegación.
- Pincha en "Productos y servicios".
- Pincha en "Información estadística".
- Pincha en "Ficheros de microdatos".
- Pincha en "Censos de población".
- Pincha en "Censos 2011".
- Pincha en "Ficheros de microdatos: Nacional".
- Guarda el archivo y descomprímelo.
- En el apartado "Personas y hogares", pincha en "diseño de registro y valores válidos de las variables".
- ¿Cuántas personas de cada sexo aparecen registradas?
3. Días 8 al 22: R
Ejecuta R en un terminal, crea una variable llamada
altura
que valga170
y sal de R guardando el espacio de trabajo. Comprueba la naturaleza de los nuevos ficheros que aparecen en el directorio actual:ls -la # deben aparecer .Rhistory y .Rdata; file .* # .Rhistory debe identificarse como texto y .RData como un fichero comprimido; less .Rhistory # deben aparecer los comandos realizados; zcat .RData | less # no se ve gran cosa; se trata de un fichero binario; zcat .RData | strings # las cadenas contenidas en el fichero; zcat .RData | hexdump -C # el contenido del fichero octeto por octeto;
- Carga en R el fichero
vacas.csv
mediante el comandoread.csv2
o mediante Rcmdr > Datos > Importar > Texto. Llamaremosv
a la variable que contiene los datos. - Representa la variable
peso
mediante un histograma. - Representa el
peso
en función delsexo
mediante cajas. - Halla la diferencia en media y mediana entre sexos.
- Representa gráficamente las frecuencias de los municipios.
(Ejecución por lotes) Prueba a usar R en un tubo de terminal:
echo '1-2*(1-pnorm(1.96))' | R --vanilla
Crea mediante un editor de textos un pequeño programa en R. Por ejemplo:
alfa <- 0.05 cuantil <- qnorm (1 - alfa/2) cat ("El cuantil gausiano bilateral asociado a alfa=", alfa, "es", cuantil, ".\n")
Llama al fichero
ejemplo.R
. Entonces puedes ejecutarlo de alguna de estas maneras:cat ejemplo.R | R --vanilla R --vanilla < ejemplo.R # equivale a la anterior; R -e 'source("ejemplo.R")' # no hace eco de cada orden; R CMD BATCH ejemplo.R # la salida se guarda en ejemplo.Rout
- Sea
x
el número de incidencias semanales registrados en cierto control. Los valores dex
obtenidos hasta ahora son:x <- c (3, 7, 5, 9, 12, 3, 14, 2)
.- ¿Cómo seleccionar el primer valor de
x
? - ¿Cómo seleccionar el tercero?
- ¿Cómo obtener un vector que contenga los dos primeros valores?
- ¿Cómo obtener un vector que contenga todos los valores menos el tercero?
- ¿Qué posiciones ocupan los valores menores que 10? (Pista:
which
). - ¿Cómo obtener un vector que contenga los valores menores que diez?
- Sustituye los elementos de
x
menores que diez por un cero.
- ¿Cómo seleccionar el primer valor de
Crea un vector llamado
precipitacion
en R y que contenga los siguientes datos (pulgadas anuales de precipitación sobre Mineápolis - San Pablo):0'77 1'74 0'81 1'20 1'95 1'20 0'47 1'43 3'37 2'20 3'00 3'09 1'51 2'10 0'52 1'62 1'31 0'32 0'59 0'81 2'81 1'87 1'18 1'35 4'75 2'48 0'96 1'89 0'90 2'05 - Trasforma
precipitacion
para que esté expresado en milímetros (litros por metro cuadrado). - Halla la media, mediana, desviación típica y recorrido intercuartílico de
precipitacion
. - Ídem de los veinte últimos años.
- Ídem de todos los años salvo el antepenúltimo.
- Ídem de todos los años secos (un año es seco si llueve menos de cincuenta milímetros).
Halla la media, mediana, desviación típica y recorrido intercuartílico de la variable número de hijos:
número de hijos 0 1 2 3 4 5 6 7 número de familias 259 486 329 49 40 3 0 1 (Aparte: puedes usar
scan()
para importar en R cómodamente datos separados por espacios (por ejemplo, al copiarlos desde HTML ó PDF y pegarlos en el terminal.)Crea un dataframe que contenga sólo las variables número de hijos y número de coches, pero que represente a la muestra completa:
número de hijos 0 0 1 1 1 2 2 2 número de coches 0 1 2 0 1 0 1 2 número de familias 18 31 14 3 10 9 5 21 En un experimento se examinó el efecto de la densidad plantar sobre la producción de tomate. Se plantaron tres variedades de tomate a cuatro diferentes densidades. Cada combinación se replicó tres veces. He aquí los resultados:
Densidad Variedad 1 Variedad 2 Variedad 3 1 9'2 12'4 5'0 8'9 9'2 6'0 16'3 15'2 9'4 2 12'4 14'5 8'6 12'7 14'0 12'3 18'2 18'0 16'9 3 12'9 16'4 12'1 14'6 16'0 14'7 20'8 20'6 18'7 4 10'9 14'3 9'2 12'6 13'0 13'0 18'3 16'0 13'0 Creamos la tabla de producciones así:
prod <- c ( 9.2, 12.4, 5.0, 8.9, 9.2, 6.0, 16.3, 15.2, 9.4, 12.4, 14.5, 8.6, 12.7, 14.0, 12.3, 18.2, 18.0, 16.9, 12.9, 16.4, 12.1, 14.6, 16.0, 14.7, 20.8, 20.6, 18.7, 10.9, 14.3, 9.2, 12.6, 13.0, 13.0, 18.3, 16.0, 13.0)
¿Cómo usarías
rep
para crear vectores que representen la variedad y la densidad?(Pista:
rep(1:nd,rep(nr*nv,nd))
,rep(1:nd,each=nr*nv)
;rep(rep(1:nv,rep(nr,nv)),nd)
,rep(1:nv,each=nr,nd)
)- Halla medias y desviaciones típicas de las
prod
asociadas a la variedad 1. - Halla medianas y recorridos intercuartílicos de las
prod
asociadas a la variedad 2 y a la densidad 3. - Crea una matriz con los datos de
prod
, densidad y variedad, por columnas. - De la anterior matriz, crea una submatriz que contenga sólo las filas asociadas a la variedad 2 y a la densidad 3.
- De la anterior matriz, crea una submatriz columna que contenga sólo
la densidad. (Pista: explora la opción
drop
de[
, o bien explora la ordenmatrix
.) - Haz un histograma de
precipitacion
. - Mete el histograma en una variable y analiza sus componentes mediante
names
,str
,ls.str
,as.list
… - Haz un gráfico de cajas de
precipitacion
. - Haz un gráfico que represente la secuencia temporal de
precipitacion
. - Haz un gráfico de barras de
x <- rbinom (200, 10, .7)
. Que aparezca la frecuencia sobre cada barra. - Haz un gráfico de la función \(f(x)=2x+x^2\) entre \(-2\) y \(3\).
- Representa
prod
en función dedensidad
con un gráfico de dispersión (plot
) y un gráfico de cajas (boxplot
). - Realiza una regresión simple (
lm
) de laprod
en función dedensidad
. - Representa gráficamente (
abline
) la recta de regresión junto a los puntos. - Genera un vector que contenga el \(R^2\) múltiple de la regresión y el p-valor asociado a la ordenada del origen.
- Realiza una regresión múltiple para ajustar una parábola a esos puntos. Consulta el capítulo 11 de Introducción a R para el modelo de la fórmula.
- Representa la parábola (
seq
,lines
) junto a la nube de puntos. - Representa gráficamente la relación entre
alzada
ypeso
para lasvacas.csv
. - Realiza una regresión lineal y otra parabólica de
peso
frente aalzada
y representa las curvas ajustadas junto a la nube de puntos. - Guarda la representación anterior como
png
y comopdf
. - Crea una lista que contenga las siguientes componentes con estas etiquetas:
- R2
- coeficiente de determinación del ajuste cuadrático
- beta0
- ordenada en el origen
- sigbeta0
- p-valor asociado a \(\beta_0\)
- peso100
- predicción de
peso
cuandoalzada
vale 100 (ajuste parabólico)
- Calcula la edad de cada animal usando
substr
. - Calcula la edad de cada animal usando
as.Date
. - Definir una función
asim
que calcule el coeficiente de asimetría de Físher. - Hallar una función en R que calcule el coeficiente de asimetría de Físher.
- Definir una función en R que
- dibuje un histograma a partir de un vector numérico dado como primer argumento
- admita un segundo argumento opcional, el color del histograma (por omisión, rojo)
- admita un tercer argumento opcional, el número de barras (por omisión, diez); hay que forzar que el histograma tenga exactamente el número de barras pedido
- cada barra debe mostrar por encima el porcentaje de observaciones que representa
- Representa el
peso
en función de laedad
con un gráfico. Añádele una recta de regresión. Guarda el gráfico como PNG y como PDF. - Ídem, pero realiza un gráfico por cada año.
- Fíjate en los datos
mtcars
. Convierte las variablesmgp
,disp
,wt
en unidades métricas. - Haz un análisis descriptivo de cada variable.
- Haz un análisis del consumo en función de
am
. - Haz un análisis del consumo en función de
am
yvs
combinados. - Haz un análisis del consumo en función de
wt
,disp
ycyl
. - Por cada nivel de
cyl
, haz un gráfico del consumo respecto al peso, que incluya una recta y una parábola de regresión. - Crea un dataframe con las mismas variables que
mtcars
pero donde todas las variables estén tipificadas (con media 0 y desviación típica 1). - Ídem con mediana 0 y recorrido intercuartílico 1.
Por cada país de PISA, crea un gráfico
png
y otropdf
que contenga:- un histograma de
PERSEV
- un histograma de
OPENPS
- la nube de puntos entre ambas variables
Puedes generar los nombres de los ficheros usando
paste
opaste0
.- un histograma de
- Por cada país de PISA, crea un dataframe con sus datos y guárdalo mediante
save
en un fichero.rda
y mediantewrite.table
en un fichero.csv
. - Por cada año y cada aeropuerto
from
devuelos.csv
, haz un gráfico de barras con los diez aeropuertosto
más frecuentes. A partir de
mtcars
, obtén un dataframe que contenga los coches que- pesen más de 1.500 quilos y
- consuman más de 15 litros por cada cien quilómetros
o bien
- su nombre empiece por
T
pero no contengaCorolla
(Pistas:
rownames
,substr
,grep
.)- Halla la desviación media de las variables de
mtcars
que sean cuantitativas continuas (digamos que tienen más de cuatro categorías). - Halla la desviación media de las variables de
vacas.csv
que sean cuantitativas continuas (digamos que tienen más de cuatro categorías) condicionando a los datos de los últimos siete años. El resultado ha de ser en todo caso númerico (noNA
). - Carga los datos de
paises.ods
en R, habiéndolos exportado en LibreOffice apaises.csv
dejando las opciones por omisión. - Basándote en
mtcars
, crea un dataframe llamadomtcoches
donde- El consumo venga en litros por 100 km.
- El peso venga en toneladas métricas.
- El cubicaje venga en centímetros cúbicos.
- Las variables
vs
yam
sean factores con etiquetas adecuadas.
- Guarda ese dataframe en un fichero en formato binario (
.rda
):save
- Sal de R sin guardar el entorno (por ejemplo, con
q("no")
), vuelve a entrar y recuperamtcoches
a partir del fichero:load
- Guarda ese dataframe en un fichero
.csv
:write.table
,write.csv
,write.csv2
- Sal de R sin guardar el entorno (por ejemplo, con
q("no")
), revisa el contenido del fichero.csv
, vuelve a entrar en R y recuperamtcoches
a partir del fichero. - Crea un modelo lineal (llámalo
l
) que prediga el consumo a partir del peso y del cubicaje. - Añade a
mtcoches
una columna con el consumo predicho porl
. - Calcula el error cuadrático medio de dicha predicción.
Para calcular el coeficiente de determinación en tanto por cien, he probado
100 * summary (l) ["r.squared"]
pero me da error. ¿Por qué?
- Vamos a asignar a cada coche una supuesta fecha de fabricación, aleatoria.
Añade a
mtcoches
una columna con fechas aleatorias desde el 1 de enero de 1970 al 31 de diciembre de 1979. - Añade otra columna con el día de la semana correspondiente a cada
fecha:
weekdays
- Construye otra columna llamada
hpu
añadiendo a la variable potencia un ruido aleatorio con distribución uniforme entre \(-1\) y \(+1\). - Construye otra columna
hpg
añadiendo a la variable potencia un ruido aleatorio con distribución gausiana con media \(0\) y desviación típica \(5\). - Genera una muestra de 10.000 valores gausianos con media 1'7 y desviación típica 0'05. Representa un histograma de dicha muestra y añádele una curva de densidad gausiana con los parámetros dichos.
El bucle
for (i in iris) print (summary (i))
escribe los resúmenes descriptivos de cada variable, pero no sus nombres. Modifícalo para que ponga el nombre de cada variable antes del resumen.
- Genera una matriz que contenga la tabla de multiplicar.
- Echa un vistazo al fichero
/var/log/dpkg.log
. Cárgalo en R (read.csv
, …). Al principio de cada renglón está la hora de cada registro. Crea un vector con las horas mediantestrptime
1 y calcula su desviación típica y su recorrido. - Obtén los minutos de cada registro del vector anterior:
unclass
- Definir una función que, dados los coeficientes «a,b,c» de una ecuación de segundo grado (\(a x^2 + b x + c = 0\)), devuelva sus raíces reales (sin parte imaginaria), en caso de haberlas.
- Sea \(f\) la función de densidad de una distribución triangular
simétrica tal que los extremos del soporte sean \(-a\) y \(a\).
- Definir en R la función
f
que calcule dicha densidad en un puntox
dado como argumento. Por omisión, usara=2
. - Comprobar si
f
puede aplicarse a vectores, por ejemplo,f(0:5)
. Si no, crear una versiónfv
vectorizada def
.
- Definir en R la función
- Ídem pero devolviendo siempre dos soluciones complejas.
Se define el fectorial del entero \(z\in\mathbf{Z}\) como \[ \mathcal F(z) = \prod_{i=z}^{-1}\,i %= i\cdot(i+1)\cdots(-2)\cdot(-1) \] o bien, recursivamente, como \[ \mathcal F(-1) = -1\qquad \mathcal F(z) = z\cdot\mathcal F(z') \] donde \(z'=z+1\) si \(z<-1\) y \(z'=z-1\) si \(z>-1\).
Escribe una función en R que calcule el fectorial de su argumento.
Dibujar la función de densidad de una distribución ji-cuadrado de 5 grados de libertad.
Sombrear las dos colas del 5% de probabilidad cada una, es decir, del 0 al percentil 5 y del percentil 95 hasta «infinito».
Hacer un diagrama de dispersión de la longitud de pétalo frente a la longitud de sépalo, con los datos del dataframe «iris» (si no estuviera, ejecutar «library(datasets);data(iris)»).
Que la
setosa
aparezcan de color rojo; lasversicolor
, de color azul; y lasvirginica
, de verde.- Definir una variable «m» que contenga en la celda «i;j» el valor de «i» \(\times\) «j».
- Definir una variable «m» que contenga por ejemplo en la celda «3;5» una cadena con el texto "3 × 5 = 15".
- Definir una variable «d» que sea un dataframe de 1000 filas y que
- la primera columna sean valores aleatorios de una uniforme U(0;1)
- la segunda, aleatorios gausianos N(170;15)
- la tercera, aleatorios exponenciales de esperanza 5
- la cuarta, aleatorios puasones de esperanza 20
- la quinta, letras aleatorias del alfabeto inglés (variable «letters») con la misma probabilidad
- la sexta, vocales (a, e, i, o, u) aleatorias donde la «u» tenga el doble de probabilidad que cada una de las otras
- Obtener sendos vectores de nombres de variables cuantitativas y cualitativas de «d».
- Definir una lista «l» de longitud 6 tal que su elemento «i»-ésimo sea el resultado de aplicar «summary» a la «i»-ésima variable de «d».
- Añadir nombres a la lista del ejercicio anterior para identificar cada sumario con su variable.
- Considerar los datos «mtcars». Obtener una lista que contenga por la media y desviación típica de «mpg» por cada valor de «cyl».
- Generar 10.000 valores de medias muestrales de muestras de tamaño 100 de una población gausiana N(170;15). Calcular la desviación típica de las medias muestrales.
- Definir una función que indique si su argumento es un número primo. Usarla para hallar los primos menores que 1000.
- Cargar en R todos los datos disponibles en
la carpeta datos, a saber:
- mtcoches
- paises
- pisa2012
- vacas
- vuelos http://stat-computing.org/dataexpo/2009/the-data.html
en nuestros ordenadores seri'a imposible cargar los datos de vuelos completos;
lo haremos a trozos, procesa'ndolos segu'n un objetivo concreto;
por ejemplo,
- mostrar distribución de vuelos por meses (Month)
- mostrar distribución de tiempos de retraso en llegadas (ArrDelay)
4. Día 23: SED, AWK, …
- Del fichero
vacas.txt
, modifica las fechas para que aparezcan en formato yanqui mes-día-año. - Del fichero
vacas.txt
, halla con AWK la desviación típica de las alzadas. - Intenta cargar en R el fichero
vacas.txt
. Investiga qué ocurre mediante AWK e intenta corregirlo. Crea un fichero
listado.txt
a partir de la salida del comando de Bash siguiente:find /usr/share/doc -ls
La columna segunda contiene la cantidad de bloques ocupados en KiB (quibioctetos).
La columna sétima contiene el tamaño de los ficheros en octetos.
Mediante
cut
, obtén un ficherooctetos.txt
que contenga sólo las dos columnas mencionadas arriba.Si no están bien alineadas las columnas en el fichero original, prueba a entubarlo a través del comando
column -t
- Haz lo mismo que en el anterior, pero mediante
awk
. - Mediante
awk
, obtén la media y la desviación típica de cada columna. - Obtén el máximo de cada columna.
- Mediante
awk
, obtén un ficherooctetos+.txt
que contenga, además, una columna con la diferencia entre octetos ocupados y octetos reales. - Trasforma en Perl mediante
a2p
el último programa AWK: Compáralo con este programa en Python:
import fileinput,string for renglon in fileinput.input(): campos = renglon.split() print campos[0], campos[1], \ string.atoi(campos[0])*1024 - string.atoi(campos[1])
Compáralo con este programa en Lisp
(defun dividir (cadena) (let ((s (make-string-input-stream cadena))) (loop for campo = (read s nil) while campo collect campo))) (loop for renglon = (read-line *standard-input* nil) while renglon do (let ((campos (dividir renglon))) (format t "~@{~a ~}~%" (car campos) (cadr campos) (- (* 1024 (car campos)) (cadr campos)))))
Notas al pie de página:
Quizá tengas que usar también Sys.setlocale("LC_TIME", "C")
porque el nombre de los meses en syslog
está en inglés y puede que la configuración
de idioma (locale) de tu ordenador esté en español u otro idioma.