Ejercicios de TIplE

Índice

1. Días 1 y 2: Ubuntu

  1. Crea una carpeta llamada informes dentro de tu carpeta personal.
  2. 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 carpeta informes.

    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
  3. Prueba una sustitución global (por ejemplo, cambia todas las comas por punto y coma) mediante Edit / Find and Replace.
  4. Exporta el documento a PDF (se creará un documento llamado informe-ubuntu.pdf en la carpeta informes).
  5. Crea una carpeta llamada « .secreta » dentro de tu carpeta personal.
  6. Mueve el fichero editable informe-ubuntu.odt a .secreta.
  7. 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.
  8. Descarga el escudo de la universidad de la dirección c976d431-0532-4725-919f-da660abba00f?t=1468927003744 (o busca «escudo uniovi» y elige uno en formato PNG).
  9. 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 a Imagen / Autorecortar imagen).
  10. 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…).
  11. 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).
  12. En el documento informe-ubuntu.odt inserta el escudo de la universidad en la cabecera, con un tamaño más o menos adecuado.
  13. Vuelve a exportar el documento a formato PDF a la carpeta informes.
  14. 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.
  15. Calcula el total mundial de población.
  16. Calcula la extensión de cada país en quilómetros cuadrados.
  17. 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    
  18. 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.
  19. Calcula el P.I.B. percápita por país y el global.
  20. Calcula el consumo de calorías medio global.

2. Días 3 al 7: GNU bash y GNU coreutils

  1. Localiza dónde se encuentra el fichero llamado «sources.list» y muestra su contenido.
  2. Busca en carleos2.epv.uniovi.es todos los ficheros .pdf del directorio /tmp/ROK
  3. Crea en tu carpeta personal la siguiente estructura de directorios:

                  +-----+     
                  |  ~  |
                  +-----+
                    | | 
            +-------+ +------+
            |                |
            v                    v
       +---------+          +--------+
       |Descargas|  |Imágenes|
       +---------+          +--------+
         |     |              |     |
         V     V              V     V
    +------+ +-----+    +---+ +---+
    |libros| |pelis|    |JPG| |PNG|        
    +------+ +-----+    +---+ +---+
    
  4. 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».
  5. 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 en imagen.png es convert imagen.jpg imagen.png.
  6. La orden wc permite contar renglones, palabras y caracteres de un fichero de texto. En la carpeta datos tienes un fichero llamado vacas.csv. Cuenta cuántos registros contiene ayudándote de wc. Luego carga el fichero en Libreoffice Calc y comprueba el resultado.
  7. En la misma carpeta está el fichero pisa2012.csv.gz. El sufijo .gz indica que está comprimido. Puedes descomprimirlo con el comando gunzip 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 y tr; pueden ser útiles (considera las opciones -n 1 para head y -c y -d para tr).

    Si no quieres descomprimir un fichero físicamente, sino sólo usarlo al vuelo, puedes usar zcat. Por ejemplo:

    zcat pisa2012.csv.gz | wc
    
  8. 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
    
  9. Intenta averiguar qué hace esta orden:

    zcat pisa2012.csv.gz | cut -d',' -f1 | uniq -c | sort -n
    
  10. Ídem:

    zcat piso2012.csv.gz | head -n 1 > /tmp/muestra.csv
    zcat piso2012.csv.gz | tail -n +2 | shuf -n 100 >> /tmp/muestra.csv
    
  11. Obtén un fichero /tmp/muestra-es.csv que contenga los registros de PISA relacionados con España (CNT=ESP).
  12. 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 texto1texto4 sitos en bellman.ciencias.uniovi.es. Para quitar acentos, tendrás que meter en el tubo la orden iconv ó recode.
  13. 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 ( »

  14. Obtén las frecuencias de los sexos en el fichero vacas.csv, en la terminal y en R
  15. Obtén los municipios más frecuentes en el fichero vacas.csv, en la terminal y en R.
  16. Halla en qué se diferencian los ficheros vacas.csv y vacas0.csv mediante el comando diff (pista: se ha usado

    cat vacas.csv | sed 's/;;/;0;/g' | sed 's/;;/;0;/g' > vacas0.csv
    

    para crear el fichero vacas0.csv; ¿por qué se repetirá el sed?).

  17. 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
    
  18. 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.)
  19. 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

  1. Ejecuta R en un terminal, crea una variable llamada altura que valga 170 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;
    
  2. Carga en R el fichero vacas.csv mediante el comando read.csv2 o mediante Rcmdr > Datos > Importar > Texto. Llamaremos v a la variable que contiene los datos.
  3. Representa la variable peso mediante un histograma.
  4. Representa el peso en función del sexo mediante cajas.
  5. Halla la diferencia en media y mediana entre sexos.
  6. Representa gráficamente las frecuencias de los municipios.
  7. (Ejecución por lotes) Prueba a usar R en un tubo de terminal:

    echo '1-2*(1-pnorm(1.96))' | R --vanilla
    
  8. 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
    
  9. Sea x el número de incidencias semanales registrados en cierto control. Los valores de x obtenidos hasta ahora son: x <- c (3, 7, 5, 9, 12, 3, 14, 2).
    1. ¿Cómo seleccionar el primer valor de x?
    2. ¿Cómo seleccionar el tercero?
    3. ¿Cómo obtener un vector que contenga los dos primeros valores?
    4. ¿Cómo obtener un vector que contenga todos los valores menos el tercero?
    5. ¿Qué posiciones ocupan los valores menores que 10? (Pista: which).
    6. ¿Cómo obtener un vector que contenga los valores menores que diez?
    7. Sustituye los elementos de x menores que diez por un cero.
  10. 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
  11. Trasforma precipitacion para que esté expresado en milímetros (litros por metro cuadrado).
  12. Halla la media, mediana, desviación típica y recorrido intercuartílico de precipitacion.
  13. Ídem de los veinte últimos años.
  14. Ídem de todos los años salvo el antepenúltimo.
  15. Ídem de todos los años secos (un año es seco si llueve menos de cincuenta milímetros).
  16. 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.)

  17. 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
  18. 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))

  19. Halla medias y desviaciones típicas de las prod asociadas a la variedad 1.
  20. Halla medianas y recorridos intercuartílicos de las prod asociadas a la variedad 2 y a la densidad 3.
  21. Crea una matriz con los datos de prod, densidad y variedad, por columnas.
  22. De la anterior matriz, crea una submatriz que contenga sólo las filas asociadas a la variedad 2 y a la densidad 3.
  23. 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 orden matrix.)
  24. Haz un histograma de precipitacion.
  25. Mete el histograma en una variable y analiza sus componentes mediante names, str, ls.str, as.list
  26. Haz un gráfico de cajas de precipitacion.
  27. Haz un gráfico que represente la secuencia temporal de precipitacion.
  28. Haz un gráfico de barras de x <- rbinom (200, 10, .7). Que aparezca la frecuencia sobre cada barra.
  29. Haz un gráfico de la función \(f(x)=2x+x^2\) entre \(-2\) y \(3\).
  30. Representa prod en función de densidad con un gráfico de dispersión (plot) y un gráfico de cajas (boxplot).
  31. Realiza una regresión simple (lm) de la prod en función de densidad.
  32. Representa gráficamente (abline) la recta de regresión junto a los puntos.
  33. Genera un vector que contenga el \(R^2\) múltiple de la regresión y el p-valor asociado a la ordenada del origen.
  34. 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.
  35. Representa la parábola (seq, lines) junto a la nube de puntos.
  36. Representa gráficamente la relación entre alzada y peso para las vacas.csv.
  37. Realiza una regresión lineal y otra parabólica de peso frente a alzada y representa las curvas ajustadas junto a la nube de puntos.
  38. Guarda la representación anterior como png y como pdf.
  39. 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 cuando alzada vale 100 (ajuste parabólico)
  40. Calcula la edad de cada animal usando substr.
  41. Calcula la edad de cada animal usando as.Date.
  42. Definir una función asim que calcule el coeficiente de asimetría de Físher.
  43. Hallar una función en R que calcule el coeficiente de asimetría de Físher.
  44. 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
  45. Representa el peso en función de la edad con un gráfico. Añádele una recta de regresión. Guarda el gráfico como PNG y como PDF.
  46. Ídem, pero realiza un gráfico por cada año.
  47. Fíjate en los datos mtcars. Convierte las variables mgp, disp, wt en unidades métricas.
  48. Haz un análisis descriptivo de cada variable.
  49. Haz un análisis del consumo en función de am.
  50. Haz un análisis del consumo en función de am y vs combinados.
  51. Haz un análisis del consumo en función de wt, disp y cyl.
  52. 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.
  53. 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).
  54. Ídem con mediana 0 y recorrido intercuartílico 1.
  55. Por cada país de PISA, crea un gráfico png y otro pdf 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 o paste0.

  56. Por cada país de PISA, crea un dataframe con sus datos y guárdalo mediante save en un fichero .rda y mediante write.table en un fichero .csv.
  57. Por cada año y cada aeropuerto from de vuelos.csv, haz un gráfico de barras con los diez aeropuertos to más frecuentes.
  58. 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 contenga Corolla

    (Pistas: rownames, substr, grep.)

  59. Halla la desviación media de las variables de mtcars que sean cuantitativas continuas (digamos que tienen más de cuatro categorías).
  60. 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 (no NA).
  61. Carga los datos de paises.ods en R, habiéndolos exportado en LibreOffice a paises.csv dejando las opciones por omisión.
  62. Basándote en mtcars, crea un dataframe llamado mtcoches donde
    1. El consumo venga en litros por 100 km.
    2. El peso venga en toneladas métricas.
    3. El cubicaje venga en centímetros cúbicos.
    4. Las variables vs y am sean factores con etiquetas adecuadas.
  63. Guarda ese dataframe en un fichero en formato binario (.rda): save
  64. Sal de R sin guardar el entorno (por ejemplo, con q("no")), vuelve a entrar y recupera mtcoches a partir del fichero: load
  65. Guarda ese dataframe en un fichero .csv: write.table, write.csv, write.csv2
  66. Sal de R sin guardar el entorno (por ejemplo, con q("no")), revisa el contenido del fichero .csv, vuelve a entrar en R y recupera mtcoches a partir del fichero.
  67. Crea un modelo lineal (llámalo l) que prediga el consumo a partir del peso y del cubicaje.
  68. Añade a mtcoches una columna con el consumo predicho por l.
  69. Calcula el error cuadrático medio de dicha predicción.
  70. Para calcular el coeficiente de determinación en tanto por cien, he probado

    100 * summary (l) ["r.squared"]
    

    pero me da error. ¿Por qué?

  71. 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.
  72. Añade otra columna con el día de la semana correspondiente a cada fecha: weekdays
  73. Construye otra columna llamada hpu añadiendo a la variable potencia un ruido aleatorio con distribución uniforme entre \(-1\) y \(+1\).
  74. 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\).
  75. 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.
  76. 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.

  77. Genera una matriz que contenga la tabla de multiplicar.
  78. 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 mediante strptime 1 y calcula su desviación típica y su recorrido.
  79. Obtén los minutos de cada registro del vector anterior: unclass
  80. 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.
  81. Sea \(f\) la función de densidad de una distribución triangular simétrica tal que los extremos del soporte sean \(-a\) y \(a\).
    1. Definir en R la función f que calcule dicha densidad en un punto x dado como argumento. Por omisión, usar a=2.
    2. Comprobar si f puede aplicarse a vectores, por ejemplo, f(0:5). Si no, crear una versión fv vectorizada de f.
  82. Ídem pero devolviendo siempre dos soluciones complejas.
  83. 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.

  84. 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».

  85. 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; las versicolor, de color azul; y las virginica, de verde.

  86. Definir una variable «m» que contenga en la celda «i;j» el valor de «i» \(\times\) «j».
  87. Definir una variable «m» que contenga por ejemplo en la celda «3;5» una cadena con el texto "3 × 5 = 15".
  88. 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
  89. Obtener sendos vectores de nombres de variables cuantitativas y cualitativas de «d».
  90. 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».
  91. Añadir nombres a la lista del ejercicio anterior para identificar cada sumario con su variable.
  92. Considerar los datos «mtcars». Obtener una lista que contenga por la media y desviación típica de «mpg» por cada valor de «cyl».
  93. 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.
  94. Definir una función que indique si su argumento es un número primo. Usarla para hallar los primos menores que 1000.
  95. 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,
      1. mostrar distribución de vuelos por meses (Month)
      2. mostrar distribución de tiempos de retraso en llegadas (ArrDelay)

4. Día 23: SED, AWK, …

  1. Del fichero vacas.txt, modifica las fechas para que aparezcan en formato yanqui mes-día-año.
  2. Del fichero vacas.txt, halla con AWK la desviación típica de las alzadas.
  3. Intenta cargar en R el fichero vacas.txt. Investiga qué ocurre mediante AWK e intenta corregirlo.
  4. 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.

  5. Mediante cut, obtén un fichero octetos.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

  6. Haz lo mismo que en el anterior, pero mediante awk.
  7. Mediante awk, obtén la media y la desviación típica de cada columna.
  8. Obtén el máximo de cada columna.
  9. Mediante awk, obtén un fichero octetos+.txt que contenga, además, una columna con la diferencia entre octetos ocupados y octetos reales.
  10. Trasforma en Perl mediante a2p el último programa AWK:
  11. 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])
    
  12. 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:

1

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.

Autor: Carlos Enrique Carleos Artime

Created: 2024-10-20 dom 22:21

Validate