Beruflich Dokumente
Kultur Dokumente
Contenido
Presentación curso: R desde el principio: curso ceRo de R
Capítulo 1: R desde el principio
Capítulo 2: Prácticas
Este libro forma parte del material didáctico utilizado por los autores en programas de formación
a pre-graduados, post-graduados y profesionales sobre el uso del software estadístico R en diversos
ámbitos. Correo electrónico de contacto: emilio.lcano@uclm.es
Presentación
El presente manual se utilizó por primera vez en el Taller homónimo durante las VI Jornadas
de Usuarios de R celebradas en Santiago de Compostela el 24 de octubre de 20141 . Esta primera
parte de presentación del curso se personaliza en cada edición teniendo en cuenta la audiencia y sus
objetivos. El manual puede utilizarse libremente para uso no comercial bajo licencia CC BY-NC-ND
4.0. Contacta con los autores2 si lo quieres utilizar para usos comerciales o quieres programar un
curso específico en tu ámbito utilizando el material.
1
http://r-es.org/VI+Jornadas
2
Correo electrónico de contacto: emilio@lcano.com
Ponente
Dr. Ing. Sistemas de Información, Master Ing. de Sistemas de Decisión, Graduado en Estadís-
tica Aplicada, Diplomado en Estadística
emilio@lcano.com
+34 665 676 225
Taller
El curso se puede adaptar a cualquier duración, si bien se recomienda una duración mínima de 4
horas, idealmente ampliando a dos más para que los asistentes practiquen con sus propios datos y
se enfrenten a las posibles dudas con el apoyo del ponente.
Agenda
Jueves 24 de octubre de 2014
Lugar
CNTG (Centro de Novas Tecnoloxías de Galicia).
Requisitos
Ordenador portátil Linux, Windows o Mac con conexión a Internet. Para evitar posibles problemas
de conexión, se recomienda haber descargado los ficheros de instalación de R y RStudio desde
http://www.r-project.org y http://www.rstudio.com respectivamente. Para la generación de
informes en formato pdf es también necesario disponer de una distribución de LATEX apropiada al
sistema operativo utilizado.
Materiales
La documentación del taller consiste en un manual en formato pdf con el contenido de las presen-
taciones que incluye también la explicación correspondiente, así como el código y las prácticas a
realizar. Se pueden proporcionar ficheros de datos o código adicionales. No es necesario imprimir
el manual para seguir el taller, se puede tener delante en el mismo ordenador donde se practica o
en una tablet. No obstante, tenerlo impreso y encuadernado es muy útil para tomar notas sobre la
explicación, aclaraciones, o ejemplos adicionales vistos durante el taller. El diseño está optimizado
para imprimir a doble cara en tamaño A4.
Modalidades
Los contenidos del taller forman parte de diversos programas formativos en los que participan los
autores con universidades y empresas. Consulta con ellos si necesitas detalles sobre las distintas
posibilidades.
Taller Jornadas R
Curso In company
Curso on-line
Seminario
E. L. Cano, J. M. Moguerza, and A. Redchuk. Six Sigma with R. Statistical Engineering for Process
Improvement, volume 36 of Use R! Springer, New York, 2012. ISBN 978-1-4614-3651-5. URL
http://www.springer.com/statistics/book/978-1-4614-3651-5.
P. Dalgaard. Introductory Statistics with R. Statistics and Computing. Springer, 2008. ISBN
9780387790534. URL http://books.google.es/books?id=YI0kT8cuiVUC.
A. de Vries and J. Meys. R For Dummies. –For dummies. Wiley, 2012. ISBN 9781119963134. URL
http://books.google.es/books?id=SYIVe0YbzxUC.
J. Verzani. Getting Started with RStudio. O’Reilly Media, 2011. ISBN 9781449309039. URL
http://books.google.es/books?id=q95Nyozjda4C.
1.1. Introducción a R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1. Qué es R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.2. Trabajar con R y RStudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2. Trabajar con datos en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2.1. Estructuras de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2.2. Importación y exportación de datos . . . . . . . . . . . . . . . . . . . . . . 37
1.3. Análisis exploratorio de datos . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.3.1. Resúmenes de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.3.2. Representación gráfica de datos . . . . . . . . . . . . . . . . . . . . . . . . . 45
1.4. Informes con RStudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
1.4.1. Problema y enfoques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
1.4.2. Exportación de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
1.5. Enfoque reproducible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
1.5.1. Markdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
1.5.2. Más opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Este libro forma parte del material didáctico utilizado por los autores en programas de formación
a pre-graduados, post-graduados y profesionales sobre el uso del software estadístico R en diversos
ámbitos. Correo electrónico de contacto: emilio.lcano@uclm.es
Capítulo 1 / Página 1
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
1.1. Introducción a R
Bienvenido al taller R desde el principio. Como veremos más adelante, R es un software estadístico
y lenguaje de programación, con el que podemos realizar infinidad de tareas. En este taller nos
centraremos en los primeros pasos para empezar a utilizar R, y perderle el miedo a una aplicación
con la cual no se interactúa mediante ventanitas y menús, sino mediante una consola y scripts de
código.
En todas esas tareas que hemos dicho que podemos hacer con R, siempre o casi siempre tenemos
que trabajar con datos. Tras seguir el taller, serás capaz de crear, acceder y modificar datos con R,
y realizar un tratamiento básico con ellos. Esto sentará las bases para una posterior profundización
en el uso de R para usos específicos, tales como optimización, estimación, visualización, etc.
Respecto a los datos, veremos en el taller cómo crear estructuras de datos desde R. También
trabajaremos con ficheros de datos de ejemplo. La estructura y formato de estos ficheros tiene una
importancia crucial al trabajar con R o con cualquier software de análisis de datos. Queda fuera
del alcance de este taller una explicación más extensa sobre los requisitos y recomendaciones para
el almacenamiento de datos.
Dicho esto, una vez tenemos los datos organizados, necesitamos los programas apropiados para
su tratamiento en la mejora de procesos. Hay una gran variedad de software comercial para el
tratamiento estadístico de datos. Las hojas de cálculo pueden ser útiles para ciertos cálculos pero a
medida que se profundiza en las técnicas estadísticas es claramente inapropiado.
Programas
SPSS
Minitab
StatGraphics
Stata, Statistica, . . .
Capítulo 1 / Página 3
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
1.1.1. Qué es R
El proyecto R
La alternativa al software comercial es R. R es . . .
Ross Ihaka y Robert Gentleman, continuando el trabajo de los laboratorios Bell a partir del
lenguaje S
http://www.r-project.org/
La web del proyecto R, aunque austera, contiene una gran cantidad de recursos para el uso de
R. El apartado de documentación y la revista de R (The R Journal) contienen gran cantidad de
documentos generales y específicos para ciertas tareas.
Capítulo 1 / Página 4
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
http://cran.r-project.org/
Los recursos oficiales se encuentran en el repositorio CRAN (The Comprehensive R Archive
Network). Aquí es donde se descarga la aplicación para instalar, pero también dispone de otros
recursos.
Paquetes – Librerías
Las librerías aportadas por usuarios (5943 en el momento de escribir este manual) son un recurso
impresionante. Hay librerías para una gran variedad de tareas.
Task Views
Para poner un poco de orden en esta ingente cantidad de recursos, tenemos las task views, que
son una especie de recopilaciones de recursos sobre un tema concreto. Por ejemplo, si vamos a la
task view ChemPhys, encontramos recursos agrupados por subtemas relacionados con la química y
la física: libros, librerías, funciones, enlaces, . . .
Capítulo 1 / Página 5
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
¿Cómo se mantiene R?
Los principales pilares que sustentan el proyecto R son los siguientes:
R Foundation
R Core Team
R Contributors
R Foundation
La fundación de R está establecida en Viena (Austria). Obtiene recursos de su propia actividad
mediante la organización de un congreso anual, pero sobre todo de sus donantes. Podemos ver
algunos específicos del mundo de R, como RStudio o Revolution Analytics, pero también algunos
muy importantes como AT&T o Google.
1
Visita por ejemplo el enlace del paquete MassSpecWavelet (http://www.bioconductor.org/packages/release/
bioc/html/MassSpecWavelet.html) para espectrometría de masas.
2
http://www.github.com
Capítulo 1 / Página 6
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Comunidad R Hispano
http://r-es.org/
Capítulo 1 / Página 7
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Grupos locales
Grupos temáticos
Lista de correo
Twitter: @R_Hisp
Una asignación.
Crear scripts de R para escribir conjuntos de expresiones que contengan un análisis completo.
Crear ficheros de informes que contengan código y texto que se puedan compilar y presentar.
Lo podemos resumir en dos: trabajar con datos, y trabajar con código. Cuando en alguna expresión
de R intervienen ficheros, se puede proporcionar la ubicación del fichero de dos formas distintas:
3
http://www.r-project.org
Capítulo 1 / Página 8
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Mediante la ruta absoluta. Es decir, la ubicación en el disco duro del ordenador con la ruta
completa.
Mediante la ruta relativa. Es decir, la ubicación en el disco duro del ordenador a partir del
directorio de trabajo.
La infraestructura de R se compone de una serie de elementos que principalmente son los siguien-
tes:
Componentes de R
La Consola
Salida gráfica
El historial
El espacio de trabajo
El directorio de trabajo
Capítulo 1 / Página 9
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
El interfaz de usuario de R (R GUI) cumple las funciones básicas para interactuar con R, pero es
muy pobre a la hora de trabajar con él. En su lugar, utilizaremos el interfaz de usuario RStudio4 ,
que es como un envoltorio del sistema R con más funcionalidades y ayudas, pero manteniendo el
mismo nivel de interacción: consola y scripts (código).
RStudio
Al igual que R, RStudio es una aplicación de software libre, pero en este caso desarrollada y
mantenida por una compañía privada. Existen versiones de pago para las cuales esta compañía
ofrece soporte y otros servicios.
Existen otro tipo de interfaces para usar R, tanto del tipo de RStudio, es decir, entornos de
desarrollo (IDE, Integrated development Environment) como interfaces gráficos de usuario (GUI,
Graphical User Interface). Estas otras opciones quedan fuera del alcance de este taller, pero se
recomienda probarlos para elegir el que mejor se adapte a las necesidades de cada uno.
Práctica 1
Instalación de R y RStudio
Sigue el guión de la práctica en el Capítulo 2 del taller.
La consola de R(Studio)
La consola de R en RStudio se encuentra en la parte inferior izquierda de la ventana del programa.
Funciona exactamente igual que en R GUI, aunque los colores pueden ser diferentes. Algunos detalles
sobre la consola en RStudio:
4
http://www.rstudio.org
Capítulo 1 / Página 10
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Podemos situar el cursor en el símbolo de la consola > desde cualquier lugar del programa
pulsando CTRL + 2.
La flecha a la derecha del directorio de trabajo sirve para que el explorador de ficheros muestre
el directorio de trabajo.
Si empezamos a escribir y pulsamos la tecla TAB o CTRL + ESPACIO aparece un menú para
seleccionar elementos disponibles en el espacio de trabajo, como variables o funciones.
CTRL + ESPACIO dentro de comillas muestra los ficheros del directorio de trabajo.
1 + 1
## [1] 2
x <- log(pi)
Capítulo 1 / Página 11
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Funciones
Una expresión de R puede ser una llamada a una función, de hecho es la expresión que más utili-
zamos. La llamada a una función es siempre igual: el nombre de la función más (obligatoriamente)
paréntesis de apertura y cierre, y dentro de los paréntesis, los argumentos de la función separados
por comas. Los argumentos de las funciones se pueden declarar de varias formas:
Por el nombre con el que están definidos en la propia función. R tiene una característica
llamada partial matching que permite escribir sólo el principio del nombre;
Podemos ver los argumentos de una función mediante la función str o el atajo de teclado en RStudio
mencionado anteriormente. Es obligatorio usar paréntesis aunque la función no requiera argumentos.
log(pi)
## [1] 1.14473
str(log)
log()
## Error in eval(expr, envir, enclos): el argumento "x" está ausente, sin valor por
omisión
seq()
## [1] 1
seq
## function (...)
## UseMethod("seq")
## <bytecode: 0x6d17810>
## <environment: namespace:base>
Capítulo 1 / Página 12
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Práctica 2
Empezando con R
Sigue el guión de la práctica en el Capítulo 2 del taller.
El editor de código
En el editor de código creamos ficheros de texto donde escribimos expresiones de R. Las expresio-
nes pueden ocupar una o varias líneas. De hecho cuando las expresiones son muy largas es preferible
usar varias líneas para que se lean mejor. Se puede escribir más de una expresión en la misma línea
si las separamos con punto y coma (;). Se pueden incluir también comentarios en el código mediante
el carácter #. Los ficheros de código de R, o scripts, tienen extensión .R. El motivo de utilizar scripts
es reutilizar el código que escribimos una vez y normalmente utilizamos de manera rutinaria en los
análisis de datos.
El editor de código de RStudio tiene las siguientes mejoras y ayudas con respecto al editor de R
GUI:
Sintaxis coloreada. Los distintos tipos de elementos aparecen de color diferente: funciones,
objetos, números, texto, . . .
Podemos ejecutar scripts completos desde la consola o desde otros scripts. Por ejemplo, si tenemos
un script llamado rutina.R que hace operaciones rutinarias que queremos utilizar en otros scripts
(por ejemplo cargar librerías necesarias, cargar datos, . . . ) lo ejecutamos con el siguiente código.
Capítulo 1 / Página 13
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
source("rutina.R")
CTRL + 1
Run
Source
Expresiones
Comentarios con #
La salida gráfica
El editor de código de RStudio tiene las siguientes mejoras y ayudas con respecto al editor de R
GUI:
Zoom
Capítulo 1 / Página 14
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
El historial
Se puede acceder al historial desde la consola simplemente utilizando las flechas arriba y abajo.
En RStudio, además, podemos ver todo el historial en una pestaña específica, y realizar otras
operaciones como guardar, abrir, o pasar líneas a la consola o al código.
Capítulo 1 / Página 15
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
## Listado de objetos
# ls()
## Estructura de un objeto
str(mivariable)
El directorio de trabajo
Una sesión de R tiene asignado un directorio de trabajo para aquellas tareas relacionadas con
ficheros en disco. Por ejemplo, para trabajar con datos, trabajar con código, o exportar gráficos.
Cuando en alguna expresión de R intervienen ficheros, se puede proporcionar la ubicación del fichero
de dos formas distintas:
Mediante la ruta absoluta. Es decir, la ubicación en el disco duro del ordenador con la ruta
completa.
Mediante la ruta relativa. Es decir, la ubicación en el disco duro del ordenador a partir del
directorio de trabajo.
Una ayuda importante con RStudio es que podemos acceder a los ficheros y carpetas del direc-
torio de trabajo desde la consola o desde el editor de código pulsando la combinación de teclas
CTRL + ESPACIO estando el cursor dentro de comillas.
Además, en la pestaña Files disponemos de un explorador de archivos que podemos vincular al
directorio de trabajo mediante la flecha en la barra de título de la consola. La operación inversa
también es posible: buscamos una carpeta mediante el icono . . . arriba a la derecha, y a continuación
seleccionamos “Set as working directory” en el icono More. Otras opciones son crear carpetas, copiar,
mover, cambiar nombre, o abrir la carpeta con el explorador de archivos en una nueva ventana. Por
último, también es posible establecer como directorio de trabajo el que contiene un script abierto
en el editor de código, mediante el menú Session.
En las opciones globales de RStudio se puede configurar el directorio de trabajo por defecto al
abrir la aplicación.
Capítulo 1 / Página 16
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
## [1] "/home/emilio/R-projects/cursos/content/6_r-es_taller"
Capítulo 1 / Página 17
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
IMPORTANTE: En R, el carácter \ no se puede utilizar tal cual. Por lo tanto, para indicar las
rutas de ficheros en Windows, tenemos que utilizar la barra normal (/), o bien poner doble barra
invertida (\\) para separar directorios. Esto es importante cuando copiamos y pegamos una ruta
del explorador de archivos de Windows.
## Correcto:
setwd("C:/micodigo")
setwd("C:\\micodigo")
## Incorrecto:
setwd("C:\micodigo")
Librerías y paquetes
La funcionalidad de R se organiza en librerías que contienen paquetes (packages). R puede tener
varias librerías, dentro de estas librerías se instalan los paquetes, que después se pueden cargar. Al
abrir R, los paquetes base se cargan automáticamente y están disponibles. Para utilizar funciones
de otros paquetes, por ejemplo el paquete qcc para gráficos de control de calidad, es necesario cargar
el paquete en la sesión. Por otra parte, para poder cargar un paquete tiene que estar instalado en
el sistema. Podemos realizar estas opciones con el interfaz gráfico de RStudio.
Instalar: Install
Capítulo 1 / Página 18
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Buscar
Ayuda
## Cargar paquete
library("qcc")
## Instalar paquete
install.packages("qcc")
## Desinstalar paquete
remove.packages("qcc")
## Desconectar paquete
detach("package:qcc", unload = TRUE)
Ayuda
Hay muchas formas de encontrar ayuda en RStudio:
El atajo CTRL + ESPACIO dentro de una función realmente muestra la documentación básica
de esa función.
Pulsando la tecla F1 con el cursor situado sobre el nombre una función o cualquier otro objeto
de R con documentación, por ejemplo un conjunto de datos.
Un tipo de documento especial son las llamadas Vignettes, que pueden incluir ejemplos y expli-
caciones más extensas.
Capítulo 1 / Página 19
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
CTRL+3
Tecla F1
Búsqueda
Viñetas
Web
Ejemplos y demos
Ayuda – funciones
Capítulo 1 / Página 20
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Práctica 3
Más fácil con RStudio
Sigue el guión de la práctica en el Capítulo 2 del taller.
Clases y tipos
Estructuras
Clases
factor Categorías
logical Verdadero/Falso
Capítulo 1 / Página 21
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Crear vectores
Podemos crear vectores introduciendo todos sus elementos, o generando secuencias. El operador
‘:’ (dos puntos) entre dos números enteros genera una secuencia de números enteros entre ambos.
También se puede crear un vector introduciendo los datos uno a uno en la consola mediante la
función ‘scan’.
## [1] 10 20 30
x2 <- 1:10; x2
## [1] 1 2 3 4 5 6 7 8 9 10
## [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
x5 <- seq_along(x4); x5
## [1] 1 2 3 4 5
Más vectores
Además de vectores numéricos y de texto, podemos crear vectores con valores lógicos o factores
(variables categóricas).
## x <- scan()
miFactor <- factor(1:5, labels = letters[1:5]); miFactor
## [1] a b c d e
## Levels: a b c d e
factorNiveles <- gl(5, 3, labels = letters[1:5]); factorNiveles
## [1] a a a b b b c c c d d d e e e
## Levels: a b c d e
vectorLogico <- 1:10 > 5; vectorLogico
## [1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
Capítulo 1 / Página 22
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
c Combina elementos
length(x1)
## [1] 3
1:length(x1)
## [1] 1 2 3
Selección en vectores
x1[1]
## semana1
## 10
Capítulo 1 / Página 23
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
x1["semana1"]
## semana1
## 10
x1[c(1,3)]
## semana1 semana3
## 10 30
x1[-c(1)]
## semana2 semana3
## 20 30
Selección lógica
x1 >= 15
## semana2 semana3
## 20 30
x4[x4 != "IBERICO"]
x4[x4 == "IBERICO"]
Ordenación
Hay dos funciones relacionadas con el orden de los elementos de un vector, con una obtenemos el
vector ordenado, y con la otra obtenemos los índices que ocupan los valores ordenados, es decir, el
primer elemento del vector es el índice del mínimo valor, y así sucesivamente. Se puede invertir el
orden con la función rev.
Capítulo 1 / Página 24
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
x6
## [1] 1 6 6 6 8 6 0 2 6 5
sort(x6)
## [1] 0 1 2 5 6 6 6 6 6 8
rev(sort(x6))
## [1] 8 6 6 6 6 6 5 2 1 0
order(x6)
## [1] 7 1 8 10 2 3 4 6 9 5
x1
x1 + 2
x2
## [1] 1 2 3 4 5 6 7 8 9 10
x5
Capítulo 1 / Página 25
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
## [1] 1 2 3 4 5
x2 + x5
## [1] 2 4 6 8 10 7 9 11 13 15
x1 + x3
## [1] 10.0 20.1 30.2 10.3 20.4 30.5 10.6 20.7 30.8 10.9 21.0
mean(x1)
## [1] 20
sqrt(x1)
miMatriz <- matrix(c(10, 20, 30, 40, 12, 26, 34, 39),
nrow = 4, ncol = 2); miMatriz
## [,1] [,2]
## [1,] 10 12
## [2,] 20 26
## [3,] 30 34
## [4,] 40 39
miMatriz[1, ]
## [1] 10 12
miMatriz[, 1]
Capítulo 1 / Página 26
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
## [1] 10 20 30 40
miMatriz[3, 2]
## [1] 34
Más matrices
Podemos asignar nombres a las filas y columnas de una matriz, y realizar cálculos sobre filas o
columnas
## variable1 variable2
## caso1 10 12
## caso2 20 26
## caso3 30 34
## caso4 40 39
rowSums(miMatriz)
colMeans(miMatriz)
## variable1 variable2
## 25.00 27.75
colnames, rownames, dimnames Obtiene o establece nombres de filas y/o columnas de una matriz
rowSums, colSums Obtiene un vector con la suma por filas o por columnas de una matriz
rowMeans, colMeans Obtiene un vector con las medias por filas o por columnas de una matriz
Creación de listas
Las listas se pueden crear introduciendo sus elementos, que pueden ser otros objetos ya creados.
Las listas también están indexadas y se puede acceder a sus elementos por índice o por nombre. En
este caso, el acceso por nombre se puede hacer mediante el operador ‘$’.
Capítulo 1 / Página 27
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
## $matriz
## variable1 variable2
## caso1 10 12
## caso2 20 26
## caso3 30 34
## caso4 40 39
##
## $vector1
## semana1 semana2 semana3
## 10 20 30
##
## [[3]]
## [1] 1 2 3 4 5 6 7 8 9 10
Acceso a listas
miLista$vector1
miLista[[1]]
## variable1 variable2
## caso1 10 12
## caso2 20 26
## caso3 30 34
## caso4 40 39
miLista["vector1"]
## $vector1
## semana1 semana2 semana3
## 10 20 30
miLista[3]
## [[1]]
Capítulo 1 / Página 28
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
## [1] 1 2 3 4 5 6 7 8 9 10
miLista$matriz[, 2]
La diferencia entre los corchetes simples y dobles es que los dobles devuelven el objeto original
dentro de la lista (por ejemplo, un vector), mientras que el corchete simple devuelve una lista
que contiene los elementos de la selección. Vemos que también podemos acceder directamente a
un elemento del objeto que hay dentro de la lista, por ejemplo una fila de la matriz en el primer
elemento de la lista.
## tipo peso
## 1 A 10
## 2 A 20
## 3 B 15
## 4 C 13
## 5 C 23
## 6 C 8
str(misDatos)
nrow(misDatos)
## [1] 6
Acceso a datos
Capítulo 1 / Página 29
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Una vez tenemos un objeto de tipo data.frame, podemos acceder a sus filas y columnas de la
misma forma que una matriz, y a las columnas(variables) de la misma manera que a las listas. Aquí
vemos la aplicación de la selección mediante vectores lógicos.
misDatos$peso
## [1] 10 20 15 13 23 8
misDatos[3, ]
## tipo peso
## 3 B 15
misDatos$peso < 15
## tipo peso
## 1 A 10
## 4 C 13
## 6 C 8
## tipo peso
## 1 A 10
## 4 C 13
## 6 C 8
Capítulo 1 / Página 30
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
## tipo peso
## 1 A 15.00000
## 2 B 15.00000
## 3 C 14.66667
misDatos[order(misDatos$peso), ]
## tipo peso
## 6 C 8
## 1 A 10
## 4 C 13
## 3 B 15
## 2 A 20
## 5 C 23
Capítulo 1 / Página 31
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
## tipo peso
## 1 A 10
## 2 A 20
## 3 B 15
## 4 C 13
## 5 C 23
## 6 C 8
Columnas calculadas
colnames(misDatos)
Capítulo 1 / Página 32
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Valores faltantes
El tratamiento de valores faltantes es muy importante para el análisis de datos, especialmente
en la fase de limpieza de datos. Los valores faltantes o perdidos se representan en R mediante
NA (not available). Si intentamos hacer cálculos sobre vectores que contienen NAs, por ejemplo la
media, obtendremos NA a menos que incluyamos el argumento na.rm = TRUE. En algunas ocasiones
querremos imputar a los valores NA otro valor, por ejemplo porque si no está el valor significa que
es cero.
## [1] NA
## [1] 3.75
x[is.na(x)] <- 0; x
## [1] 1 3 0 5 6
mean(x)
## [1] 3
Capítulo 1 / Página 33
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
NULL
## NULL
1/0
## [1] Inf
sqrt(-1)
## [1] NaN
1i
## [1] 0+1i
pi
## [1] 3.141593
letters
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q"
## [18] "r" "s" "t" "u" "v" "w" "x" "y" "z"
LETTERS
## [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q"
## [18] "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
month.name
Capítulo 1 / Página 34
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
month.abb
## [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov"
## [12] "Dec"
y <- as.numeric(x)
str(y)
## num [1:3] 1 2 NA
class(y)
## [1] "numeric"
is.numeric(y)
## [1] TRUE
Capítulo 1 / Página 35
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
str(vectorfechas)
table(vectorfechas)
## vectorfechas
## 01/11/2011 02/11/2011 03/10/2011 03/11/2011 04/10/2011 04/11/2011
## 4 2 2 2 8 1
## 05/10/2011 05/11/2011 06/11/2011 12/11/2011 13/11/2011 16/10/2011
## 1 1 2 1 1 2
## 17/10/2011 18/10/2011 19/10/2011 22/10/2011 23/10/2011 24/10/2011
## 5 3 2 9 20 9
## 25/10/2011 28/09/2011 28/10/2011 29/09/2011 30/09/2011 30/10/2011
## 6 4 1 5 4 3
## 31/10/2011
## 2
## vectornumeromes
## 09 10 11
## 13 73 14
## vectormes
## 2011-09 2011-10 2011-11
## 13 73 14
## vectordiasemana
## domingo jueves lunes martes miércoles sábado viernes
## 28 7 18 21 9 11 6
Capítulo 1 / Página 36
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
library(ISOweek)
vectorsemana <- ISOweek(vectorfechas)
table(vectorsemana)
## vectorsemana
## 2011-W39 2011-W40 2011-W41 2011-W42 2011-W43 2011-W44 2011-W45
## 13 11 2 39 19 14 2
Capítulo 1 / Página 37
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
El asistente detecta si el fichero contiene encabezados o no (heading), cuáles son los caracteres
separador (separator), símbolo decimal y las comillas. Se muestran el texto del fichero y debajo
cómo quedará el conjunto de datos tras la importación. Una vez importado, RStudio muestra el
conjunto de datos en el visualizador de datos.
La primera expresión importa el fichero y asigna los datos a un objeto data.frame con el mismo
nombre que el conjunto de datos, mientras que la segunda visualiza los datos. La función base para
importar ficheros de texto es read.table. read.csv y read.csv2 son versiones simplificadas. Por
defecto, read.csv2 utiliza las opciones de exportación de Excel en español, por lo que podemos
usar simplemente la siguiente expresión.
Una vez importados los datos, ya están en el espacio de trabajo y podemos trabajar directamente
con ellos. Por ejemplo, podemos obtener un resumen de la variable merma.
Capítulo 1 / Página 38
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
summary(ejDatos$merma)
Tenemos un valor perdido. Supongamos que ese dato existe, pero por alguna razón no ha llegado
al fichero de datos. Primero querremos ver a qué observación se refiere ese valor perdido.
ejDatos[is.na(ejDatos$merma), ]
Es la observación 4. Buscamos el origen del problema y encontramos que nos saltamos el dato de
la observación número 4 al meterlo en la hoja de cálculo (supongamos que el dato es 0.1879618).
summary(ejDatos$merma)
rbind Une las filas de dos conjuntos de datos. Tienen que tener el mismo número y nombres de
columnas
Capítulo 1 / Página 39
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
cbind Une las columnas de dos conjuntos de datos. Si no tienen el mismo número de filas se reciclan
los valores.
Paquete RODBC: Open Database Connectivity (ODBC) sources, incluyendo Microsoft SQL
Server, Access, MySQL, PostgreSQL, Oracle e IBM DB2;
Con las funciones download.file y url podemos obtener ficheros desde la red
Práctica 4
Trabajar con datos
Sigue el guión de la práctica en el Capítulo 2 del taller.
Capítulo 1 / Página 40
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Explorar variables
Explorar variables
La función str nos proporciona los primeros valores de cada variable, pero estos se ven mejor con
la función head (tail para los últimos).
head(ejDatos)
tail(ejDatos)
str obtenemos el número de filas y columnas, tipo de datos y los primeros valores de cada variable.
head Se obtienen las primeras filas del conjunto de datos
tail Se obtienen las últimas filas del conjunto de datos
Capítulo 1 / Página 41
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Tablas de frecuencias
Para variables categóricas, es inmediato obtener una tabla con el número de observaciones para
cada categoría. Para variables numéricas, tenemos que crear los intervalos previamente, o utilizar
los que devuelve el histograma.
table(ejDatos$defecto)
##
## No Sí
## 48 52
##
## (0.18,1.71] (1.71,3.22] (3.22,4.74] (4.74,6.26] (6.26,7.78]
## 1 0 39 57 3
Tablas de frecuencias
## marcaclase frecuencia
## 1 0.5 1
## 2 1.5 0
## 3 2.5 0
## 4 3.5 12
## 5 4.5 36
## 6 5.5 42
## 7 6.5 8
## 8 7.5 1
cut Crea una variable categórica agrupando valores de una variable numérica
Capítulo 1 / Página 42
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
mean(ejDatos$merma)
## [1] 4.89572
mean(ejDatos$merma)
## [1] 4.89572
median(ejDatos$merma)
## [1] 5.026095
#moda
datoshist$mids[which(datoshist$counts == max(datoshist$counts))]
## [1] 5.5
Recordemos que si hay valores faltantes no podemos hacer cálculos a menos que indiquemos que
no se tengan en cuenta esas observaciones.
## [1] NA
## [1] 4.943273
median mediana
max máximo
min mínimo
Capítulo 1 / Página 43
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Medidas de posición
El percentil x nos indican aquél valor para el cual el x % de las observaciones de la muestra son
inferiores a dicho valor.
quantile(ejDatos$merma, 0.05)
## 5%
## 3.675773
summary(ejDatos$merma)
summary(ejDatos$manchas)
Estratificación
Generalmente los datos numéricos son homogéneos dentro de los distintos grupos, pero pueden ser
muy heterogéneos entre los grupos. Por ejemplo, si analizamos una variable en animales de distintas
razas, los datos pueden ser muy diferentes de unos a otros. Para obtener resúmenes por grupos
podemos seguir dos estrategias: obtener primero el subconjunto correspondiente como vimos en el
capítulo anterior y después aplicar la función correspondiente, o utilizar la función tapply. Para
funciones que devuelven un solo valor podemos obtener subtotales con la función aggregate.
## $maquina1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.188 4.449 4.971 4.851 5.353 6.075
##
## $maquina2
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.429 4.137 5.081 4.940 5.583 7.775
Capítulo 1 / Página 44
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
El primer argumento es el vector con los datos, el segundo argumento es el vector con los grupos o
categorías, y el tercero es la función que queremos aplicar a cada grupo. El resultado es un resumen
de cinco números de la variable merma para cada valor de la variable maquina.
Medidas de dispersión
Las siguientes funciones devuelven el rango, la varianza, la desviación típica, el rango intercuar-
tílico y la desviación a la mediana.
range(ejDatos$merma)
var(ejDatos$merma)
## [1] 0.8154839
sd(ejDatos$merma)
## [1] 0.9030415
IQR(ejDatos$merma)
## [1] 1.034561
mad(ejDatos$merma)
## [1] 0.7717776
Gráficos – Generalidades
Se pueden generar gráficos en R prácticamente sin opciones adicionales a los datos. A este respecto,
genéricamente un gráfico en dos dimensiones tiene dos ejes: uno horizontal y otro vertical. Las
funciones gráficas esperan dos vectores: uno para el eje horizontal, y otro para el eje vertical. Si solo
Capítulo 1 / Página 45
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
se proporciona un vector, entonces será utilizado para el eje vertical, y el eje horizontal serán los
índices del vector. También se le puede pasar una fórmula indicando a la izquierda del símbolo ~ el
vector del eje vertical, y a la derecha el vector del eje horizontal.
R decide cuál es el gráfico más apropiado y representa los datos. Si el gráfico no es el que
deseamos, podemos pasar más argumentos o utilizar los parámetros gráficos para personalizar el
gráfico. Podemos distinguir dos tipos de opciones:
Opciones genéricas
puntos: pch
Magnificación: cex.*
Ejemplos opciones
par(bg="white")
plot(1:10, main = "Título", sub = "Subtítulo", type = "b",
xlab = "Índice", ylab = "Variable",
col = 2, cex = c(rep(1, 9), 2), pch = 16,
fg = "blue")
Capítulo 1 / Página 46
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Título
10
●
8
●
●
6
Variable
●
4
●
2
2 4 6 8 10
Índice
Subtítulo
Histograma
Lo importante del histograma es que, dependiendo de los datos, es posible que la representación
sea mejor cambiando el número de barras por defecto mediante el argumento breaks.
hist(ejDatos$merma)
Histogram of ejDatos$merma
40
30
Frequency
20
10
0
0 2 4 6 8
ejDatos$merma
Capítulo 1 / Página 47
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Gráfico de caja
Al igual que hicimos con el histograma, los datos utilizados para dibujar el gráfico de caja también
se pueden guardar en una variable y utilizarlos después. Esto es útil por ejemplo para identificar los
valores atípicos.
●
6
4
2
●
0
Identificación de atípicos
datosbp$out
El objeto de clase boxplot es una lista en la que el elemento out son los posibles valores atípicos.
Podemos buscar los registros que se corresponden con estos valores, y buscar si ha habido algún
problema.
Capítulo 1 / Página 48
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Gráfico de barras
barplot(table(ejDatos$manchas))
25
20
15
10
5
0
2 3 4 5 6 7 8 9 10 11 14
barplot(table(ejDatos$defecto, ejDatos$manchas),
col = gray(1:3 / 3),
xlab = "Nº de lechones")
legend("topright", legend = levels(ejDatos$defecto), fill = gray(1:3 / 3))
Capítulo 1 / Página 49
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
25
No
20
15
10
5
0 Sí
2 3 4 5 6 7 8 9 10 11 14
Nº de lechones
Gráfico de dispersión
El gráfico de dispersión se obtiene mediante la función plot, bien pasando como argumentos x e
y los vectores con los valores, o mediante la fórmula. Podemos añadir una línea de regresión para
ver visualmente si hay relación.
●
●
●
●●
●● ●
6
●
● ●
● ● ●
● ●● ●
●
●●●●●●●
●
● ● ●
●●
● ●●●
● ●
●
●●
● ● ●
●● ●
● ●● ●
●●●
●●● ●
●
●● ● ●●
● ●●
●
merma
●●●●
●
● ●●●
●●●
4
● ●●
●●●
●●●
●
2
●
0
50 60 70 80 90 100
temp
Capítulo 1 / Página 50
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Estratificación en gráficos
Podemos obtener gráficos de caja por grupos de forma muy sencilla indicando que la variable del
eje horizontal (x) es el factor de agrupación.
●
0
maquina1 maquina2
Un poco más complicado es hacerlo por ejemplo para histogramas. Con las librerías lattice
y ggplot2 se obtienen visualizaciones muy llamativas. Con los gráficos estándar podemos crear
matrices de gráficos. Por ejemplo para el ejemplo anterior, tenemos 2 histogramas, uno por cada
granja. Entonces mediante los parámetros gráficos creamos una matriz de 2 columnas y una fila de
gráficos, y los obtenemos con la función tapply.
Matriz de histogramas
par(mfrow = c(1,2))
tapply(ejDatos$merma, ejDatos$maquina, hist)
Capítulo 1 / Página 51
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
14
20
8 10
Frequency
Frequency
15
10
6
4
5
2
0
0 1 2 3 4 5 6 7 3 4 5 6 7 8
X[[i]] X[[i]]
## $maquina1
## $breaks
## [1] 0 1 2 3 4 5 6 7
##
## $counts
## [1] 1 0 0 1 24 21 3
##
## $density
## [1] 0.02 0.00 0.00 0.02 0.48 0.42 0.06
##
## $mids
## [1] 0.5 1.5 2.5 3.5 4.5 5.5 6.5
##
## $xname
## [1] "X[[i]]"
##
## $equidist
## [1] TRUE
##
## attr(,"class")
## [1] "histogram"
##
## $maquina2
## $breaks
## [1] 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
##
Capítulo 1 / Página 52
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
## $counts
## [1] 1 10 6 6 14 7 4 1 0 1
##
## $density
## [1] 0.04 0.40 0.24 0.24 0.56 0.28 0.16 0.04 0.00 0.04
##
## $mids
## [1] 3.25 3.75 4.25 4.75 5.25 5.75 6.25 6.75 7.25 7.75
##
## $xname
## [1] "X[[i]]"
##
## $equidist
## [1] TRUE
##
## attr(,"class")
## [1] "histogram"
par(mfrow = c(1,1))
En este Curso cero nos hemos centrado en mostrar cómo obtener gráficos con las mínimas op-
ciones: una simple llamada a una función con los datos como argumento ya produce el gráfico
apropiado. Es importante destacar que, además de los paquetes específicos para gráficos mencio-
nados más arriba, podemos conseguir espectaculares visualizaciones utilizando los gráficos base de
R con las opciones apropiadas. Sirva como ejemplo los siguientes histograma con una presentación
mejorada añadiendo algunas opciones a la función hist.
hist(ejDatos$merma,
breaks = 10,
main = "Histograma de la merma",
xlab = "Peso (kg.)",
ylab = "Densidad",
freq = FALSE,
col = rgb(128/255,182/255,182/255),
border = "white",
Capítulo 1 / Página 53
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
bg = "red",
ylim = c(0, 0.6),
col.lab = rgb(56/255, 56/255, 48/255))
lines(density(ejDatos$merma), lwd = 3,
col = rgb(56/255,56/255,48/255))
Histograma de la merma
0.6
0.5
0.4
Densidad
0.3
0.2
0.1
0.0
0 2 4 6 8
Peso (kg.)
Práctica 5
Descripción de datos con R
Sigue el guión de la práctica en el Capítulo 2 del taller.
Capítulo 1 / Página 54
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
El Problema
Enfoque Copy-paste
Este enfoque provoca inconsistencias (por ejemplo entre unos grupos y otros, entre diferentes
analistas, etc.), errores, contenidos desactualizados o no reproducibles, especialmente en la ejecución
de software, simulaciones, etc.
Además, cada vez que hay que hacer un cambio, hay que hacerlo en muchos sitios, con la consi-
guiente pérdida de tiempo y posibles errores.
Inconsistencias
Capítulo 1 / Página 55
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Errores
Desactualización
No reproducibilidad
Investigación reproducible
Reproducible Research
The goal of reproducible research is to tie specific instructions to data analysis and experimental
data so that reports can be recreated, better understood and verified
Literate Programming
Literate programming is a methodology that combines a programming language with a documen-
tation language
Enfoque Reproducible
El flujo de trabajo sería el siguiente: los contenidos se encuentran en ficheros de código. Estos
ficheros fuente, se compilan y producen los materiales en los formatos necesarios. Los cambios se
hacen una vez, y todos los materiales son actualizados adecuadamente
Capítulo 1 / Página 56
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
sink("miSalida.txt")
x <- rnorm(100)
summary(x)
##
## Shapiro-Wilk normality test
##
## data: x
## W = 0.99018, p-value = 0.6788
Capítulo 1 / Página 57
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
sink()
Exportación de gráficos
Se puede realizar la exportación de gráficos desde el asistente de RStudio fácilmente. En el icono
export podemos copiarlo al portapapeles, exportar como pdf, o exportar como imagen. En la expor-
tación podemos elegir la ubicación y el nombre del fichero, así como las dimensiones de la imagen.
En el caso de exportar como imagen podemos seleccionar distintos formatos (PNG, SVG, . . . )
plot(rnorm(100))
dev.off()
Capítulo 1 / Página 58
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Markdown en RStudio
Al crear un nuevo documento R markdown, se crea una plantilla automáticamente donde podemos
ver lo fácil que es crear el informe. Hay una guía rápida de markdown disponible en la ayuda. Incluir
títulos, énfasis en el texto y listas es muy sencillo, y a menudo no necesitamos nada más para realizar
un informe. El código de R se inserta mediante el icono chunks. Podemos manejar el aspecto que
tendrá finalmente el resultado de los chunks en el informe mediante las opciones dentro de las llaves
en el encabezado del chunk. Como en cualquier script, podemos ejecutar otros scripts mediante la
función source, por ejemplo para la importación de datos u otras acciones rutinarias, y dejar el
código en el informe lo más limpio posible.
Podemos compilar el informe cuantas veces queramos (icono de bordado), una vez sea definitivo
lo guardamos en el disco. Podemos imprimirlo al abrirlo con el navegador, enviarlo por correo
electrónico, o incluso publicarlo en la Intranet de la organización.
Capítulo 1 / Página 59
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Formatos de salida
Con las últimas versiones de RStudio, además de ficheros html es posible crear ficheros pdf y
Word. Para este cometido RStudio integra la aplicación pandoc. Al crear un fichero R Markdown
aparece un cuadro de diálogo donde podemos seleccionar si queremos hacer un documento, una
presentación, o un documento interactivo (shiny). Posteriormente se puede generar cualquiera de
los formatos independientemente del que se haya elegido al crear el fichero mediante el icono de
‘bordado’.
---
title: "Ejemplo para el taller R desde el principio"
author: "Emilio L. Cano"
date: "31/01/2015"
output: word_document
---
Capítulo 1 / Página 60
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
‘‘‘{r}
pdensity <- c(10.6817, 10.6040, 10.5709, 10.7858,
10.7668, 10.8101, 10.6905, 10.6079,
10.5724, 10.7736, 11.0921, 11.1023,
11.0934, 10.8530, 10.6774, 10.6712,
10.6935, 10.5669, 10.8002, 10.7607,
10.5470, 10.5555, 10.5705, 10.7723)
‘‘‘
Y este es su histograma:
‘‘‘{r, echo=FALSE}
hist(data = pdensity)
‘‘‘
31/01/2015
Y este es su histograma:
Capítulo 1 / Página 61
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Capítulo 1 / Página 62
ceRo V1.02 Ed. del Orto–2018-02-01 R desde el principio
Utilizar markdown para realizar informes de procesos es la opción más sencilla tanto por su uso
como porque no se requieren otras aplicaciones instaladas. A continuación se incluyen a modo de
referencia otras opciones.
Más formatos
xtable: Este paquete genera tablas y se puede usar en combinación con markdown
Práctica 6
Informes con RStudio
Sigue el guión de la práctica en el Capítulo 2 del taller.
emilio@lcano.com
Capítulo 1 / Página 63
2 Prácticas
Contenido
2.1. Práctica 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Práctica 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.2. La consola de R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.3. Componentes de R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3. Práctica 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4. Práctica 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5. Práctica 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.6. Práctica 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Este libro forma parte del material didáctico utilizado por los autores en programas de formación
a pre-graduados, post-graduados y profesionales sobre el uso del software estadístico R en diversos
ámbitos. Correo electrónico de contacto: emilio.lcano@uclm.es
Capítulo 2 / Página 1
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
2.1. Práctica 1
P1. Instalación de R y RStudio
En esta primera práctica revisaremos el proceso de instalación del software necesario para seguir
el taller. Se describe el proceso para Windows, ver la documentación en la web de R para otros
sistemas.
1. Descarga R
Ve a http://www.r-project.org;
Haz click en el enlace Download R;
Selecciona un mirror próximo a tu localización;
Haz click en el enlace Download R for Windows;
Haz click en el enlace base;
Haz click en el enlace Download R 3.x.x for Windows;
Guarda el fichero .exe en una carpeta de tu ordenador.
2. Instala R
Abre la carpeta donde guardaste el fichero .exe;
Haz doble click en el fichero R-3.x.x-win.exe;
Acepta las opciones por defecto en el asistente de instalación.
3. Descarga RStudio
Ve a http://www.rstudio.com;
Haz click en el enlace Powerful IDE for R;
Haz click en el enlace Desktop;
Haz click en el botón Download RSudio Desktop;
Haz click en el enlace RStudio x.xx.xxx - Windows XP/Vista/7/8 ;
Guarda el fichero .exe en una carpeta de tu elección.
4. Instala RStudio
Asegúrate de tener instalada la última versión de Java1 en tu sistema;
Abre la carpeta donde guardaste el fichero .exe;
Haz doble click en el fichero RStudio-x.xx.xxx.exe;
Acepta las opciones por defecto del asistente de instalación.
1
http://www.java.com
Capítulo 2 / Página 3
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
Capítulo 2 / Página 4
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
2.2. Práctica 2
P2. Empezando con R
En esta práctica . . .
Practicaremos expresiones de de R en la consola de R.
2.2.1. Introducción
R2 es una aplicación de análisis estadístico y representación gráfica de datos, y además un lenguaje
de programación. R es interactivo, en el sentido de que responde a determinadas entradas que
recibe. Estas entradas son expresiones que pueden ser de diversos tipos, principalmente:
Una asignación.
2
http://www.r-project.org
Capítulo 2 / Página 5
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
2.2.2. La consola de R
La principal forma de interactuar con R es a través de la consola. La consola es un intérprete de
expresiones que espera a que introduzcamos una expresión cada vez, después la evalúa, y produce un
resultado (con salida visible o no). La consola espera que escribamos una expresión tras el símbolo
> Una vez escrita la expresión, pulsamos la tecla de retorno de línea, si está completa la evalúa.
Por ejemplo, la expresión más sencilla posible es escribir un número (practica tú mismo todas las
expresiones en la consola):
## [1] 1
Vemos que el resultado de esta expresión es una línea de texto con el número 1 entre corchetes
y a continuación el número 1. El número 1 entre corchetes es un identificador que se explicará más
adelante. El resultado es el mismo número que hemos escrito. Un paso más sería hacer un cálculo
numérico, por ejemplo:
1 + 1
## [1] 2
Podemos hacer operaciones aritméticas con números en la consola. ¿Qué pasa si la expresión está
incompleta?
1 +
Como podemos comprobar, el símbolo > cambia a +, indicando que la expresión no está completa.
El sistema queda así hasta que completamos la expresión, o pulsamos la tecla ESC, que cancela la
instrucción.
Las expresiones aritméticas devuelven el resultado de la operación. Otro tipo de expresiones en
R son las expresiones lógicas, que devuelven el valor verdadero (TRUE) o falso (FALSE):
5 > 6
## [1] FALSE
Por último, habíamos dicho que una llamada a una función es también una expresión. La siguiente
expresión es un ejemplo sencillo de una llamada a una función:
log(pi)
## [1] 1.14473
Capítulo 2 / Página 6
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
donde pi es a su vez una expresión que obtiene el valor del objeto interno que contiene el valor de
π = 3,14159. . . .
pi
## [1] 3.141593
La función log obtiene el logaritmo de un número. La llamada a una función es siempre igual:
el nombre de la función más (obligatoriamente) paréntesis de apertura y cierre, y dentro de los
paréntesis, los argumentos de la función separados por comas. Los argumentos de las funciones se
pueden declarar de varias formas:
Por el nombre con el que están definidos en la propia función. R tiene una característica
llamada partial matching que permite escribir sólo el principio del nombre;
Siguiendo con el ejemplo del logaritmo, podemos ver los argumentos que puede recibir mediante
la función str3 :
str(log)
Por tanto, log es una función que admite dos argumentos: x, que no tiene ningún valor predeter-
minado, y base, cuyo valor predeterminado es la expresión:
exp(1)
## [1] 2.718282
es decir, el número e. Por tanto el valor que obtenemos con la función log es el logaritmo natural
(con base e) del número que le pasemos como primer argumento, o con otra base si se la pasamos
como argumento base. Por ejemplo el logaritmo decimal sería:
## [1] 3
3
Esta función devuelve la estructura (structure) de cualquier objeto de R
Capítulo 2 / Página 7
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
log()
## Error in eval(expr, envir, enclos): el argumento "x" está ausente, sin valor por
omisión
Lo que pasa es que como no hay un valor predeterminado para el argumento x, la función devuelve
un error indicando que se necesita un argumento. El mensaje suele tener indicaciones para resolver
el problema. Algunas funciones pueden devolver el resultado sin necesidad de ningún argumento.
Por ejemplo, la función seq genera secuencias de números
str(seq)
## function (...)
Los tres puntos (. . . ) indican que la función acepta un número indeterminado de argumentos.
¿Qué pasa si la ejecutamos sin argumentos?
seq()
## [1] 1
Obtenemos una secuencia de números desde el 1 hasta el 1 por intervalos de 1. Es decir, simple-
mente un 1. Podemos averiguar más sobre los argumentos que espera una función llamando a la
ayuda de R con cualquiera de las siguientes expresiones:
help("seq")
?seq
Como la función no necesita ningún argumento para funcionar, ¿la podríamos usar sin los parén-
tesis?
seq
## function (...)
## UseMethod("seq")
## <bytecode: 0x6d17810>
## <environment: namespace:base>
La respuesta es no, porque para R, todos los símbolos son objetos. La expresión seq sin paréntesis
es el símbolo de la función seq, y lo que devuelve el intérprete de R es el “contenido” de la función,
es decir, su código4 .
4
En este caso no se muestra todo el código porque es una función compilada.
Capítulo 2 / Página 8
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
2.2.3. Componentes de R
El histórico Cada vez que mandamos una expresión a evaluar a R, esta expresión se guarda en el
histórico. Esto nos permite varias cosas. Sin duda la más útil y utilizada es que podemos navegar por
el histórico desde la consola utilizando las flechas arriba y abajo del teclado, y por tanto recuperar
cualquier comando del histórico de la sesión actual.
El espacio de trabajo (workspace) Una de las características de R es que todos los datos con los
que trabaja se encuentran en memoria. Esto es un inconveniente cuando hay grandes volúmenes
de datos (realmente grandes) que al nivel de este curso no nos afecta. Hasta ahora sólo hemos
interactuado con R para obtener una salida, pero no tenemos ningún dato guardado. Los objetos
que creemos con R se guardan en el espacio de trabajo. Para crear un objeto en el espacio de trabajo
utilizamos el operador de asignación <-. Nótese que es como una flecha hacia la izquierda, con la
que asignamos al símbolo que pongamos a la izquierda, el resultado de la expresión que pongamos
a la derecha. Por ejemplo, la siguiente expresión
x <- log(pi)
asigna al símbolo x el valor de la expresión log(pi). Vemos que en este caso no tenemos ninguna
salida. Ahora bien, R ha almacenado en el objeto llamado x el valor de esa expresión. Los símbolos
de objetos que vamos creando son expresiones en sí, y podemos mostrar su valor simplemente
escribiéndolos:
## [1] 1.14473
A partir del momento en que lo hayamos creado, podemos utilizarlo para cualquier cálculo pos-
terior
r <- 5
y <- x * r
Ahora tenemos tres objetos en nuestro espacio de trabajo. Podemos ver una lista de todos los
objetos en el espacio de trabajo mediante la función ls() (pruébalo).
El directorio de trabajo (working directory) Aunque R trabaje con los datos en memoria, nece-
sitaremos trabajar con ficheros de diversas formas. Las más habituales serán:
Capítulo 2 / Página 9
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
Crear scripts de R para escribir conjuntos de expresiones que contengan un análisis completo.
Crear ficheros de informes que contengan código y texto que se puedan compilar y presentar.
Lo podemos resumir en dos: trabajar con datos, y trabajar con código. Cuando en alguna expresión
de R intervienen ficheros, se puede proporcionar la ubicación del fichero de dos formas distintas:
Mediante la ruta absoluta. Es decir, la ubicación en el disco duro del ordenador con la ruta
completa.
Mediante la ruta relativa. Es decir, la ubicación en el disco duro del ordenador a partir del
directorio de trabajo.
getwd()
## [1] "/home/emilio/R-projects/cursos/content/6_r-es_taller"
Vamos a importar un fichero de datos al espacio de trabajo. Para ello, seguimos los siguientes
pasos:
3. Crea una carpeta llamada practica dentro de la carpeta elegida como directorio de trabajo.
5. Ahora vamos a leer los datos del fichero merma.csv y los vamos a guardar en la variable
datosmerma del espacio de trabajo:
Capítulo 2 / Página 10
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
Ahora tenemos en el espacio de trabajo un objeto de tipo data.frame con los datos de ejemplo.
Antes de continuar, vamos a ver qué contiene el fichero original. Ábrelo primero con un editor de
texto (por ejemplo notepad) y después con Excel.
datosmerma
## merma1 merma2
## 1 0.5898096 0.5546336
## 2 0.7699551 0.4586740
## 3 0.4423950 0.4625733
## 4 0.1879618 0.4435143
## 5 0.5905073 0.5891067
## 6 0.3134635 0.5275887
## 7 0.3826816 0.4838308
## 8 0.4836043 0.5074132
## 9 0.2486089 0.5160621
## 10 0.6051586 0.5730381
## 11 0.5067886 0.4975202
## 12 0.4791623 0.4873221
## 13 0.6042787 0.4941835
## 14 0.5346945 0.5286707
## 15 0.4122351 0.5076593
## 16 0.5943235 0.4478568
## 17 0.3975605 0.4973688
## 18 0.6621651 0.4678119
## 19 0.4480144 0.4745331
## 20 0.4931513 0.4776396
## 21 0.2888590 0.5650112
## 22 0.3383765 0.5366145
## 23 0.3472022 0.4868374
## 24 0.3083300 0.4452029
## 25 0.5900408 0.4994261
## 26 0.4043457 0.5418506
## 27 0.6855449 0.5161952
## 28 0.4066120 0.5621270
## 29 0.5193181 0.5054836
## 30 0.5238445 0.4423790
## 31 0.5459414 0.4803725
## 32 0.5128432 0.4628434
Capítulo 2 / Página 11
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
## 33 0.5860134 0.5128423
## 34 0.4247076 0.5126099
## 35 0.4253199 0.4565454
## 36 0.7457103 0.5154761
## 37 0.5575050 0.5326917
## 38 0.3400140 0.4776172
## 39 0.4483312 0.5070834
## 40 0.5011622 0.5017150
## 41 0.5749295 0.4607430
## 42 0.5386808 0.4175651
## 43 0.5151573 0.5335224
## 44 0.6497129 0.4584059
## 45 0.4090000 0.5226908
## 46 0.4224551 0.4680626
## 47 0.3802048 0.5275968
## 48 0.4580838 0.4560155
## 49 0.3871146 0.4713060
## 50 0.5852463 0.4605988
Se trata de 50 observaciones de dos variables. Podemos ver usar también la función str para
obtener su estructura, o la función head para obtener sólo las primeras líneas.
str(datosmerma)
head(datosmerma)
## merma1 merma2
## 1 0.5898096 0.5546336
## 2 0.7699551 0.4586740
## 3 0.4423950 0.4625733
## 4 0.1879618 0.4435143
## 5 0.5905073 0.5891067
## 6 0.3134635 0.5275887
En las siguientes prácticas veremos más en detalle los objetos de tipo data.frame. De momento
digamos que sólo nos interesa la primera variable, merma1. Puedo acceder a esta variable de varias
formas, la más habitual es utilizar el operador $:
Capítulo 2 / Página 12
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
datosmerma$merma1
Hasta ahora sólo habíamos visto objetos atómicos, es decir, sólo contenían un elemento. Los datos
de la columna merma1 son un vector. Nos fijamos que ahora el identificador a la izquierda de la
salida de R cobra sentido. El número entre corchetes al lado de cada línea indica el número de orden
del primer dato de la línea.
Los vectores son el tipo de datos más importantes en R. Muchas de las funciones disponibles en R
están definidas sobre vectores. Por ejemplo, podemos calcular la media de estos cincuenta valores:
mean(datosmerma$merma1)
## [1] 0.4833425
summary(datosmerma$merma1)
Incluso un gráfico, que se abrirá automáticamente en el dispositivo (device) que tenga establecido
R.
boxplot(datosmerma$merma1)
Capítulo 2 / Página 13
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
0.7
0.6
0.5
0.4
0.3
0.2
Capítulo 2 / Página 14
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
2.3. Práctica 3
P3. Más fácil con RStudio
En esta práctica . . .
Practicaremos las expresiones de la práctica 1 en RStudio.
El interfaz de usuario de R (R GUI) cumple las funciones básicas para interactuar con R, pero es
muy pobre a la hora de trabajar con él. En su lugar, utilizaremos el interfaz de usuario RStudio5 ,
que es como un envoltorio del sistema R. Es necesario tener instalado primero R y después instalar
RStudio. La pantalla de RStudio está dividida en cuatro partes:
En la parte superior izquierda, tenemos el editor. Aquí podemos editar scripts de R y cualquier
otro tipo de archivo de texto, por ejemplo markdown o html para realizar informes. También
es en este cuadrante donde se visualizan las tablas de datos que tengamos en el espacio de
trabajo.
En la parte superior derecha tenemos los entornos (environment), entre los que se encuentra
el espacio de trabajo de la sesión actual, y el histórico.
Capítulo 2 / Página 15
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
Iremos viendo cada componente en sucesivas prácticas. RStudio contiene ciertas ayudas a la
hora de escribir expresiones de R. Por ejemplo, si pulsamos las teclas <CTRL + ENTER> en
el editor, se muestran los objetos disponibles en el espacio de trabajo. Esta lista se puede
filtrar escribiendo (antes o después de pulsar las teclas) las primeras letras del objeto que
buscamos. Si tenemos el cursor dentro de los paréntesis de una función y pulsamos las teclas
<CTRL + TAB>, obtenemos una lista de los argumentos que podemos proporcionar a la función,
incluyendo una ayuda básica sobre ellos.
Para terminar esta práctica, realícese lo siguiente:
1. Seleccionar el directorio de trabajo a utilizar durante el curso.
2. Probar en la consola de RStudio las expresiones que se han visto hasta ahora.
3. Crear un script llamado practica0.R con algunos de los comandos vistos.
4. Intenta aplicar algunas de las funciones de las presentaciones al conjunto de datos de
ejemplo.
5. Practica con las dos columnas de datos de los datos de ejemplo.
6. Explorar los distintos componentes de RStudio.
7. Buscar ayuda sobre funciones.
8. Visualizar datos del espacio de trabajo.
Capítulo 2 / Página 16
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
2.4. Práctica 4
P4. Trabajar con datos
En esta práctica . . .
Practicaremos la importación, creación, acceso y modificación de datos.
1. Abre RStudio. Revisa los distintos paneles y pestañas disponibles, familiarízate con ellas.
3. Selecciona el directorio en el que quieres trabajar desde el panel de archivos. AYUDA: utiliza
el icono con los tres puntos (. . . ).
8. Introduce las siguientes expresiones en el script. Utiliza comentarios (##) para documentar tu
código, y ve probando que las expresiones funcionan:
Selección del directorio de trabajo. AYUDA: función setwd.
## Cambia "practicas/" por la ruta a tu carpeta. Recuerda que en Windows debes usa
setwd("taller/")
Comprueba si tienes instalada la librería ISOweek. Si no, instálala (si usas la función
install.packages, no hace falta que la guardes en el script)
Carga la librería ISOweek. (AYUDA: función library).
library(ISOweek)
Capítulo 2 / Página 17
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
Explora los datos y familiarízate con los nombres de variables, número de filas, tipos de
datos, etc.
Crea nuevas columnas para el año, año-mes, numero-mes y semana (ISO) de la variable
fecha.
ejDatos2$año <- format(ejDatos2$fecha2, "%Y")
ejDatos2$mes <- format(ejDatos2$fecha2, "%m")
ejDatos2$añomes <- format(ejDatos2$fecha2, "%Y-%m")
ejDatos2$semana <- ISOweek(ejDatos2$fecha2)
Añade una variable que sea un ratio entre la merma y el número de manchas.
ejDatos2$ratio <- ejDatos2$merma / ejDatos2$manchas
Extrae del conjunto de datos inicial los valores de todas las variables de la décima ob-
servación
ejDatos2[10, ]
## maquina merma manchas defecto defecto2 temp fecha fecha2
## 10 maquina1 4.978984 7 No 0 63.11871 19-01-2014 <NA>
## año mes añomes semana ratio
## 10 <NA> <NA> <NA> <NA> 0.7112834
Capítulo 2 / Página 18
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
NOTA 1. Las rutas de los ficheros pueden variar en tu ordenador con respecto a lo mostrado en
la práctica. Repasa lo visto sobre el directorio de trabajo (working directory).
Capítulo 2 / Página 19
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
2.5. Práctica 5
P5. Descripción de datos con R
Sigue el guión de la práctica
Practica tú mismo las expresiones en la consola de R
Experimenta con tus propias pruebas, cambia cosas
Asegúrate de haber realizado las prácticas anteriores
En esta práctica. . .
Realizaremos análisis exploratorio de datos básicos
1. Abre RStudio. Revisa los distintos paneles y pestañas disponibles, familiarízate con ellas.
2. Abre el script que creaste en la práctica 1. NOTA: si no lo cerraste antes de cerrar RStudio,
lo tendrás abierto automáticamente.
3. Ejecuta el script y comprueba que el directorio de trabajo es el del taller.
4. Muestra el directorio de trabajo en el panel de ficheros. AYUDA: utiliza la flecha en la barra
de título de la consola.
5. Comprueba que tienes los conjuntos de datos en el espacio de trabajo.
6. Visualiza el conjunto de datos ejDatos2, comprueba los tipos de datos.
7. Obtén una distribución de frecuencias de la merma con 8 bloques. AYUDA: funciones cut y
table. ¿Cuál es la moda de los datos?
##
## (3.42,3.97] (3.97,4.52] (4.52,5.06] (5.06,5.6] (5.6,6.15] (6.15,6.69]
## 12 18 21 29 16 3
## (6.69,7.23] (7.23,7.78]
## 0 1
## Intervalo modal:
names(tabla)[tabla == max(tabla)]
## [1] "(5.06,5.6]"
Capítulo 2 / Página 20
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
mean(ejDatos2$merma)
## [1] 4.953981
summary(ejDatos2$merma)
hist(ejDatos2$merma)
Histogram of ejDatos2$merma
30
25
20
Frequency
15
10
5
0
3 4 5 6 7 8
ejDatos2$merma
Capítulo 2 / Página 21
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
●
7
6
5
4
## [1] 7.775489
## Puedo encontrar las filas con todas las variables de estas dos observaciones
pesos[ejDatos2$merma %in% caja$out, ]
11. Etiqueta los valores atípicos en el gráfico de cajas con el identificador de fila.
Capítulo 2 / Página 22
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
text(x = 1,
y = caja$out,
label = filas,
pos = 4)
● 62
7
6
5
4
12. Obtén un resumen de cinco números por año del conjunto de datos producción para alguna
de las variables, por ejemplo manchas. AYUDA: función tapply.
## $‘2‘
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.347 4.670 4.993 4.993 5.316 5.639
##
## $‘3‘
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.329 4.715 4.940 5.007 5.232 5.818
##
Capítulo 2 / Página 23
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
## $‘4‘
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.530 4.706 5.237 4.910 5.441 5.634
##
## $‘5‘
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.429 4.585 5.081 4.920 5.375 6.663
##
## $‘6‘
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.960 4.570 4.990 4.990 5.415 5.913
##
## $‘7‘
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.662 4.441 5.012 5.033 5.366 7.775
##
## $‘8‘
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.966 4.343 5.051 5.090 5.878 6.140
##
## $‘9‘
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.897 4.196 4.773 4.773 5.205 6.031
##
## $‘10‘
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.892 4.208 4.654 4.784 4.931 6.421
##
## $‘11‘
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.118 4.134 4.722 4.717 5.305 5.307
##
## $‘14‘
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.943 4.979 5.016 5.016 5.053 5.090
Capítulo 2 / Página 24
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
100
●
90
●
●
80
● ●
●● ● ●
●●
● ●●
●●
temp
● ●●
● ●
●
70
● ●
● ●●
● ●●
● ● ●●
●● ●
●●
●●
● ●●●
●
●●●
●●
●
●
●
● ●
● ● ●
●
● ●●●
60
●●●
●●
●●
●●
●
●
●
● ●●
●
● ●●●
●
●● ●
●
50
● ●
●
●● ●
●
4 5 6 7
merma
legend("bottomright",
legend = unique(ejDatos2$defecto),
fill = unique(ejDatos2$defecto))
Capítulo 2 / Página 25
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
100
●
90
●
●
80
● ●
●● ● ●
●●
● ●●
●●
temp
● ●●
● ●
●
70
● ●
● ●●
● ●●
● ● ●●
●● ●
●●
●●
● ●●●
●
●●●
●●
●
●
●
● ●
● ● ●
●
● ●●●
60
●●●
●●
●●
●●
●
●
●
● ●●
●
● ●●●
●
●● ●
●
50
● ●
● Sí
●● ●
● No
4 5 6 7
merma
Capítulo 2 / Página 26
ceRo V1.02 Ed. del Orto–2018-02-01 Prácticas
2.6. Práctica 6
P6. Informes con R
En esta práctica. . .
Realizaremos informes reproducibles en diversos formatos.
1. Para poder generar informes en pdf, instala una distribución de LATEX apropiada para tu
sistema6 .
2. Crea un fichero R Markdown para cada una de las prácticas anteriores y elabora un informe
sencillo para cada una de ellas.
6
Visita http://www.miktex.com para Windows
Capítulo 2 / Página 27