You are on page 1of 79

ENTRENAMIENTO EN R

APRENDA R EN UN DÍA
Todo lo que necesita para empezar a
programar en R
R. Borneo
25/10/2015

R. Borneo Aprenda R en un día.


Copyright © 2015-2025 R Borneo. Todos los derechos reservados. Ninguna
parte de esta publicación puede ser reproducida, distribuida o transmitida en
cualquier forma o por cualquier medio, incluyendo fotocopia, grabación u
otros métodos electrónicos o mecánicos, sin la previa autorización por escrito
del editor, excepto en el caso de citas breves en revisiones críticas y otros
usos no comerciales permitidos por el derecho de autor

Copyright © 2015-2025 R Borneo. All rights reserved. No part of this


publication may be reproduced, distributed, or transmitted in any form or by
any means, including photocopying, recording, or other electronic or
mechanical methods, without the prior written permission of the publisher,
except in the case of brief quotations embodied in critical reviews and certain
other non-commercial uses permitted by copyright
Prefacio

Este libro fue escrito para ayudar a quien quiera aprender el lenguaje de
programación R rápidamente. Puede sonar exagerado pero la lectura de este
libro puede ponerlo en la onda de R en tan solo un día. Obviamente no va a
ser un experto en un día pero tendrá suficientes conocimientos de R como
para empezar a correr rutinas simples. Este libro ha sido desarrollado con un
enfoque práctico en donde con ejemplos se irán introduciendo y
desarrollando habilidades de programación y uso de R. Este libro es ideal
para académicos, científicos, matemáticos e ingenieros, aunque realmente
cualquiera puede leerlo y aprender R rápidamente.

No se requiere ningún conocimiento previo de programación de


computadoras y progresivamente se cubren todos los pasos esenciales que se
necesitan para convertirse en alguien competente en el uso de R. EL LIBRO
PUEDE SER LEIDO EN UN DIA. Los temas incluyen cómo introducir,
manipular, formatear, iterar, consultar, realizar análisis estadísticos básicos.
Se utiliza un enfoque de “paso a paso” con demostraciones usando conjuntos
de datos preestablecidos. El lector puede aplicar estos ejemplos en su casa y
en su propia consola de R.

En el sitio http://estadisticor.blogspot.com se irán publicando pequeños tips y


trucos acerca de R y como usarlo para diferentes propósitos.
Tabla de contenido
Prefacio
Introducción
Descargar R
Instrucciones detalladas
Instalar R
Una primera aproximación a R
CAPITULO 1. Asignación de Objetos
1.1 Creación de objetos simples
1.2 Operaciones simples utilizando elementos simples
1.3 Funciones
1.4. Concatenación y arreglos “arrays”
1.6 Agregar comentarios
Ejercicio 1.3.2.
CAPITULO 2. Generación de datos y sistema de indexación
2.1. Secuencias
2.2. Sistema de Indexación (para acceder a elementos dentro de un objeto)
2.3. Extrayendo datos de un Data Frame
2.4. Atributos de un objeto
Ejercicios
Capítulo 3. Inspección de datos y estadística básica
3.1. Inspección de datos
Capítulo 4. Importar y Exportar datos
4.1 Importar datos
4.2 Establecer el directorio de trabajo
4.3 Leer datos
4.4 Procesar datos
4.5. Exportar datos
Capítulo 5. Gráficos
5.1. Tipos de gráficos estándar
5.2. Diagrama de dispersión
5.3. Formateo (cambio) de Ejes
5.4. Cambio del carácter y tamaño del carácter del gráfico
5.5. Cambio de colores
5.6 Agregar una línea que ajuste al gráfico.
5.7 Agregando el Título al gráfico
Bibliografía utilizada (y para profundizar):
Respuestas a ejercicios
Introducción
Descargar R

R se puede descargar desde el sitio web: http://www.R-project.org, usando el


link 'Descargar' título 'CRAN' (Integral R Archivo de Red). Seleccionar la
ubicación más cercana a usted, y si es un usuario de Windows, Mac o Linux.
A continuación, seleccione el paquete de "base" (Windows) o el archivo .pkg
reciente (Mac) y siga las instrucciones de la pantalla para descargar e instalar
R. Cuando haya completado este paso, verá dos iconos azul 'R' en la
escritorio, que puede ser doble clic para abrir el software.

Instrucciones detalladas

Sigue las siguientes instrucciones para instalar R (Windows)

Ingresa a la página Web del proyecto R en la siguiente dirección:


http://www.r-project.org

Ir a download R y te llevará a una página con los CRAN MIRROR.


Selecciona el más cercano a tu ciudad/país (es decir si estas en Bélgica
escoge uno de Bélgica, en Venezuela uno de Venezuela. Si no hay en tu país
escoge el del país más cercano)

Escoge el sistema operativo de tu computadora (averígualo antes)

Por ejemplo: Download R for Windows.


Cuando instalamos R por primera vez, seleccionamos el subdirectorio “base”
o vamos a install R for the first time

Descargamos el programa
Para ello: hacemos clic sobre “Download R.3.2.2 for Windows
Un archivo ejecutable se bajará en tu carpeta (folder) de descargas (o donde
lo hayas mandado a guardar). Ese archivo ejecutable será usado para instalar
R. La última versión tiene el nombre de R-3.2.2-Win.exe
Instalar R

Para instalar R se tiene que ir al archivo ejecutable compilado de R (en la


mayoría de los casos estará en la carpeta de DESCARGAS y se llama
R.3.2.2-win.exe (si bajaste el R para Windows)

Luego se tiene que hacer doble clic sobre sobre el archivo R.3.2.2-win.exe y
se abrirá una ventana “Abrir archivo-Advertencia de seguridad”,

Hacer click en botón “Ejecutar”

Y seleccionar el idioma de instalación (supongo que el español). YO


PREFIERO EN INGLES YA QUE TODO EL LENGUAJE ES EN INGLES.

Seguir las instrucciones del asistente de instalación de R


Leer las condiciones de licencia de R

- Seleccionar la carpeta donde instalaremos R


Seleccionar los componentes a instalar

Especificar si utilizaremos opciones de configuración (seleccionar NO)

- Seleccionar dónde se crearán accesos directos al programa


Se selecciona tareas adicionales como la de “Crear un ícono en el
escritorio”

Una vez ejecutadas las acciones anteriores, R se instalará automáticamente.

- Para terminar el proceso se hace click sobre el botón “Finalizar”


Listo ya tienes R instalado en tu computadora.
Una primera aproximación a R

¿Estás listo? 3,2,1……yá

Abre R (haciendo doble click en el icono que creó el programa

Se te abrirá una ventana como esta:

El símbolo ( > ) y un cursor aparecen en la consola (R console) del programa


(no hace falta escribirlos, aparecen por default). Es allí donde se escribirán las
instrucciones para que R las ejecute.

Las teclas de flechas (izquierda y derecha) de tu computadora


Se pueden utilizar para editar los comandos antes de ejecutarlos. Los
comandos (instrucciones) se ejecuta pulsando 'enter' después de haber escrito
la instrucción. La tecla de flecha hacia arriba se puede utilizar para ver y
editar un comando ejecutado previamente. Del mismo modo, la tecla 'escape'
puede utilizarse para abandonar un comando (por ejemplo, si tiene errores en
ella) y pasar a la siguiente línea.

Ya que este es un libro introductorio la utilización de comandos será más que


suficiente para correr análisis simples en R. Sin embargo, a medida que se
avanza puede ser útil ver, editar y guardar el texto escrito en R en un archivo.
Esto se puede lograr mediante el acceso a un "Nuevo script 'a través del
menú "Archivo " en donde los comandos se pueden escribir en cada línea y
luego se pueden ejecutar en masa seleccionando el texto deseado y luego
pulsar simultáneamente las teclas Ctrl y R.

La base fundamental de este libro es "aprender a través de ejemplos ', por lo


que se recomienda que el lector haga su camino a través de los capítulos en
orden, replicando los comandos que aparecen en su máquina.
CAPITULO 1. Asignación de Objetos
1.1 Creación de objetos simples

R trabaja con objetos. Estos objetos son creados en el espacio de trabajo de


R. En R se pueden crear objetos desde un archivo o directamente desde una
URL. La asignación de objetos puede hacerse directamente con R o con
funciones (comandos) dentro de R. Pero vayamos a lo más simple.

Supongamos que se quiere crear un objeto x cuyo valor sea de 8. Entonces al


comando “asignar” (<-). Escribimos (en la consola)

> x <- 8 (ó x = 8)

Esta simple asignación (a través del uso del comando “asignar” (<-) crea un
objeto llamado x cuyo valor es igual 8

Para ver el valor de un objeto, coloque después de el “prompt” (>) el nombre


del objeto (x) y presione enter. Por ejemplo:
>x
[1] 8

lo que sólo significa que el primer y único elemento del objeto x es igual a 8.

Un objeto potencialmente podría tener numerosos elementos, por ejemplo, si


todo un conjunto de datos se leyó y le asigna a x.

Los objetos pueden tener elementos de distintos tipos. Por ejemplo se pueden
crear objetos con un conjuntos de caracteres pero para ello necesitamos
utilizar las comillas (“ “) para informar a R que se trata de caracteres:

y <-“casa”

Crea un objeto llamado x cuyo elemento es un conjunto de caracteres (rafael).


Si llamamos al objeto y (una vez creado) obtendremos:

> y = "casa"
>y
[1] "casa"
>

Lo cual quiere decir que el objeto y contiene una lista de caracteres (“c-a-s-
a”)
1.2 Operaciones simples utilizando elementos simples

Abre R y crea tres objetos:

x = 8, h = 10 , z = “casa”

>x=8
> h = 10
> z = "casa"

R puede hacer operaciones con esos objetos por ejemplo sumar, restar,
multiplicar, etc

Para sumar:

> x+h
[1] 18

Prueba a restar x –h:


> x-h
[1] -2

Ahora trata de sumar x y z ¿qué resultados obtienes?

>x+z
Error in x + z : argumento no-numérico para operador binario

Lo que sucede es que z no contiene un valor numérico entonces no puede


sumar y arroja entonces un error como resultado (explicando cual es el error)

A continuación una tabla con los operadores básicos de R


1.3 Funciones

R ya tiene incorporado muchísimas funciones (como las mostradas


anteriormente) pero también se pueden escribir funciones especiales según la
necesidad.

En esta etapa, no nos complicaremos mucho con la sintaxis de programación


("gramática"), ya que esta se irá haciendo evidente a medida que se avance
con el libro. Tenga presente que se pueden escribir funciones. Por ejemplo
supongamos que queremos crear una función que divida un numero entre otro
(o sea la división). Supongamos que a esa función la vamos a llamar la
función “div”

> div <- function(X,Y) {


+ result <- (X/Y)
+ print(result)
+}

Quieres dividir 100 entre 10?

Escribe:

div(100,10) y dale a enter

Quieres dividir 300 entre 2.5 y/o


300 entre 3.3333?

div(300,2.5) y dale a enter

> div(100,10)
[1] 10
> div(300,2.5)
[1] 120
> div(300,3.3333)
[1] 90.0009
>
Por supuesto la función división ya existe usando el operador (/). Fue un
ejemplo simple para demostrar cómo puedes escribir una función en R.

Ejercicio 1.3.1 Trata de escribir una función llamada torr que multiplique tres
números. (respuesta al final) ¿si se te pregunta cuál es el torr de 2,4 y 5, que
respondes? ¿Cómo lo habrías hecho en R sin usar la función torr?
1.4. Concatenación y arreglos “arrays”

La concatenación, el proceso de combinar, enlazar, o unir valores numéricos


o de caracteres es un proceso muy usado en R. Esto se logra mediante el uso
de la función c (). Lo que hace c() es crear una arreglo sistemático (“arrray”)
sencillo (conjunto de valores) a través de la concatenación. Por ejemplo si
queremos juntar los números 4,5,5,7,8 en un objeto que llamaremos “u”
escribimos:

> u <- c(4,5,5,7,8)


>u
[1] 4 5 5 7 8

Si ahora hacemos la operación u + 10 en R

> u+10
[1] 14 15 15 17 18

Lo que hace R es sumar a cada elemento de u el valor de 10

Matemáticamente la función c(4,5,5,7,8) crea un vector con los elementos


4,5,5,7,8

1.5. Listado y remoción de objetos

A medida que se va trabajando en R se van creando objetos en el espacio (o


ambiente) de trabajo. Para ver todos los objetos creados se usa la función ls
().
La función ls() devuelve una lista de los objetos creados en el espacio de
trabajo (memoria). Solo se muestran los nombres de los objetos (no el
contenido).

Entonces escribe ls() en RL

> ls()
[1] "div" "g" "torr" "u"
>
Lo que quiere decir que hasta el momento yo he creado cuatro objetos
llamados:
"div", "g" , "torr", "u" (lo que te salga a ti dependerá si has borrado ---ver
próximo párrafo--- algunos objetos tal como yo hice)

Para eliminar un objeto individual del entorno de trabajo se usa el comando


rm() Por ejemplo si quiero eliminar el objeto y escribo rm(y)
> rm(g)
> ls()
[1] "div" "torr" "u" "x" "z" objeto g ya no aparece en la lista

Si quiero eliminar todos los objetos se puede hacer enclavado la función


ls()dentro de la función rm(). Sin embargo, recuerdo que esto es irreversible
oseaque perderá todos los objetos

rm(list=ls())

> rm(list=ls()) #remover objetos


> ls() #listar objetos
character(0) #esto quiere decir que ya R no tiene objetos en el ambiente de
trabajo
1.6 Agregar comentarios

¿Notaste el uso de # (símbolo de libra, también llamado hash en inglés) en el


párrafo anterior?

El # se usa para agregar comentarios. Todo lo que este después de # R en la


misma línea R no lo vé como instrucción y lo ignora pero puede resultar muy
útil para ir escribiendo lo que vamos haciendo en R, para no olvidarnos. Es
un buen habito el de ir comentando lo que vamos haciendo en R. También es
útil porque podemos escribir comentarios antes de iniciar cualquier tarea en R
y así saber qué es lo que vamos a hacer y si guardamos el archivo y lo
abrimos dentro de un mes saber porque y que fue lo que hicimos.

> #esta sesión es para crear dos objetos x e y y sumarlos


> x <- 8
> x <- 8 #crear el objeto x
> y = 9 #crear el objeto y
> x + y #sumar x + y
[1] 17
> #el valor en [1] es el resultado de la suma x + y
>

En el caso anterior R solo ejecuta la creación y suma de los objetos. Todo lo


demás lo ignora.
Ejercicio 1.3.2.

Crea tres objetos u, v y w.


v es una concatenación de 3,4, 5
u es una concatenación de 7,7,7
w es una concatenación de 0,1,0
lista los objetos
suma los tres objetos, multiplica los tres objetos,
elimina el objeto v
divide w por 2.
Divide 1 entre cero
Comenta todo lo que haces.
CAPITULO 2. Generación de datos y sistema de indexación
2.1. Secuencias

Una secuencia de números puede ser generada en R de varias maneras. El


operador más utilizado es el (:). Así pues, si abrimos errores y escribimos
1:10 se genera una secuencia lineal de 1 a 10:

> 1:10
[1] 1 2 3 4 5 6 7 8 9 10

También se puede generar un objeto que contenga una secuencia de números.


Por ejemplo un objeto x que contenga una secuencia desde el 12 al 23:

> x <-12:23
>x
[1] 12 13 14 15 16 17 18 19 20 21 22 23

Las secuencias pueden ser de mayor a menor, de menor a mayor y contener


números negativos

> 7:-2
[1] 7 6 5 4 3 2 1 0 -1 -2

El operador ‘:’ tiene prioridad sobre otros operadores en una expresión.


Entonces 3*1:10 es lo mismo que 3*(1:10). En decir, R prioriza la formación
de la secuencia antes que la multiplicación.

> 3*1:10
[1] 3 6 9 12 15 18 21 24 27 30
> 3*(1:10)
[1] 3 6 9 12 15 18 21 24 27 30

Si se desean generar secuencias más elaborados debe usarse la función “seq”.


Por ejemplo si se quiere genera una secuencia de 2 en 2 desde el 1 al 10
escribimos:

> seq(1, 10, 2)


[1] 1 3 5 7 9

En el comando anterior: seq(a,b,c) a representa el número de inicio de la


secuencia (1), b el número final (10) y c el factor de incremento (de 2 en 2).

La misma función “seq” puede ser usada para determinar el incremento entre
dos valores para una secuencia de una longitud dada.

Para el caso de una secuencia de 12 valores entre -6 y 20, se escribe:

seq(from=-6, to=20, length=12) secuencia desde -6 hasta 20 con 12 valores

> seq(from=-6, to=20, length=12)


[1] -6.000000 -3.636364 -1.272727 1.090909 3.454545 5.818182 8.181818
[8] 10.545455 12.909091 15.272727 17.636364 20.000000

En la salida de R anterior, el [8] (10.545455) denota el elemento 8 (octavo)


de la secuencia.

La función rep crea una secuencia de números idénticos Por ejemplo si se


quiere una secuencia del número 3 repetido 10 veces entonces escribimos:

> rep(3,10)
[1] 3 3 3 3 3 3 3 3 3 3
2.2. Sistema de Indexación (para acceder a elementos dentro de
un objeto)

Subscripting (tambien llamado “indexing o dereferencing”) involucra la


extracción de un dato en particular (o de un grupo de datos) de un objeto. Es
como una sesión de preguntas en R.

Por ejemplo, para acceder al CUARTO elemento de un vector x, simplemente


se escribe x[4]. Es como que se le preguntara a R ¿Cuál es en cuarto elemento
de x?

Nótese que los paréntesis cuadrados “[4]” son los usados para “extraer” la
información

En el objeto x=12 13 14 15 16 17 18 19 20 21 22 23, creado anteriormente el


cuarto elemento es 15

>x
[1] 12 13 14 15 16 17 18 19 20 21 22 23
> x[4]
[1] 15

Para extraer todos los elementos menos uno en particular se usa el signo
menos (-)

> x[-4] #extrae todos menos el 4to elemento


[1] 12 13 14 16 17 18 19 20 21 22 23

Si se quiere extraer el 5to y el 7mo elemento de un objeto hay que usar la


función concatenación “ c()” dentro de los paréntesis cuadrado. Así:

> x[c(5,7)]
[1] 16 18
Extraer el 5 y 7mo elemento del objeto x

O si se quiere extraer una secuencia de elemento del objeto c por ejemplo


desde el 2do al 8avo se escribe:

> x[c(2:8)]
[1] 13 14 15 16 17 18 19
2.3. Extrayendo datos de un Data Frame

En la tabla de arriba se muestran los tipos de datos que pueden usarse en R.


Los marcos de datos ( data frame() ) son el tipo más común de "estructura de
datos" se utiliza en R.

Un marco de datos puede ser pensado como un objeto compuesto de varios


valores, estructurado a través de un número determinado de filas y columnas
- al igual que una tabla de datos. Un data.frame puede ser creado desde un
archivo externo (o de Internet), o puede ser creado directamente en R. Esto
último se consigue indicando los nombres de las columnas que desee (en este
caso x e y), seguido de sus valores (que se muestra aquí usando dos
secuencias)

> nueva_df1 <- data.frame(x=100:110, y=250:260)


> nueva_df1
x y
1 100 250
2 101 251
3 102 252
4 103 253
5 104 254
6 105 255
7 106 256
8 107 257
9 108 258
10 109 259
11 110 260

Las columnas x e y son generadas automáticamente. En la salida de R la


primera columna representa el número de fila

Extraer información de un data frame puede hacerse de una manera similar


(usando los paréntesis cuadrados) a como se hacía en las secuencias. La
diferencia es que ahora hay dos dimensiones. Entonces, en general el
comando para obtener el elemento de la i fila y de la j columna
es data.frame[i,j].

Suponga que ud. quiere saber cuál es elemento de la cuarta fila y la segunda
columna:

> nueva_df1[4,2]
[1] 253

Si quiere saber cuáles son los elementos de la fila 2 entonces escribe

> nueva_df1[2,]
x y
2 101 251

Si quieres extraer los elementos de la columna 1, entonces se escribe

> nueva_df1[,1]
[1] 100 101 102 103 104 105 106 107 108 109 110

Si quieres que te lo muestra en forma de columna entonces:

> as.data.frame(nueva_df1[,1])
nueva_df1[, 1]
1 100
2 101
3 102
4 103
5 104
6 105
7 106
8 107
9 108
10 109
11 110

Las columnas de un marco de datos también se pueden ser extraídas por su


nombre, utilizando el símbolo $. Esto es especialmente útil si un marco de
datos contiene muchísimas columnas que sería engorroso tener que contar
para encontrar las columnas (s) que se desee examinar.

En nuestro ejemplo sencillo la columnas tienen por nombre x e y. Suponga


que tiene que extraer la columna y, entonces el comando a usar es

data.frame$nombredelacolumna

> nueva_df1$y
[1] 250 251 252 253 254 255 256 257 258 259 260

El comando: nueva_df1$y[2:6] extrae los datos 2do a 6to de la columna “y”

> nueva_df1$y[2:6]
[1] 251 252 253 254 255
2.4. Atributos de un objeto

A veces es importante conocer cierta información de un conjunto de datos (o


de un objeto). R permite hacer una revisión rápida de un conjunto de datos
mediante ciertas instrucciones a través de lo que se conoce como dimensiones
de un objeto.

Todo objeto tiene dos atributos propios: tipo y longitud. El tipo se refiere a la
clase o tipo de los elementos pertenecientes al objeto. Hay cuatro tipos
principales de elementos: carácter, numérico, complejo y lógicos
(Verdadero/Falso). La longitud es simplemente el número de elementos que
hay en el objeto. Para ver el tipo y la longitud de un objeto se usan las
funciones “mode” y “length”.

Ejemplo:

> x <- c(4,5,6)


> mode(x)
[1] "numeric"
> length(x)
[1] 3

En el ejemplo anterior el objeto x está formado por elementos del tipo


numérico y tiene una longitud de 3

Suponga que UD TIENE EL CONSJUNTO DE DATOS nueva_df1 y no


sabe cuántas columnas tiene. Udpuede averiguar eso con R con el comando
“ ncol()”

> ncol(nueva_df1)
[1] 2

Efectivamente nueva_df1 tiene2 columnas. Cuantas filas (se usa nrow() )

> nrow(nueva_df1)
[1] 11

El comando dim() arroja tanto columnas como filas

dim(nueva_df1)
[1] 11 2

#La salida da primero las filas y segundo las columnas

La función length() permite saber el tamaño de una secuencia u objeto

>y
[1] 50 70 90 110 130 150 170 190 210 230 250 270 290 310 330 350 370 390 410
[20] 430 450 470 490 510 530 550 570 590 610 630 650 670 690 710 730 750 770 790
[39] 810 830 850 870 890
> length(y)
[1] 43

En el ejemplo de arriba el objeto y tiene una longitud de 43


Ejercicios
2.1. Defina un objeto llamado U que contenga una secuencia de números del
24 al 85
b) ¿Cual es el 25avo elemento de U?
c) ¿Cuales son los elementos en la posición 5 y 28?
d) Muestre todos los elementos de U menos el 28avo

2.2
Genere un marco de datos llamado df1 de 3 columnas y 7 filas, las columnas.
Las columnas deberán llamarse H, J, L. La columna H es una secuencia del 1
al 5, la columna J una secuencia del 25 al 21 y la columna L una secuencia de
1 repetidos 5 veces.

a) Extraer todos los valores de la columna 1.

b) Extraer las filas 2 a 4 de la columna 2.

c) Extraer los valores en la fila 5 para todas las columnas.

d) Extraer de los valores de las filas 1a 4 y de las columnas 1 y 3 en el


formato de trama de datos
Capítulo 3. Inspección de datos y estadística básica
3.1. Inspección de datos

Cuando se tiene un conjunto de datos nuevos puede resultar beneficioso


establecer algunos parámetros iniciales: por ejemplo ¿cuán grande es? ¿Cuál
es el valor máximo y el mínimo? ¿Cuál es el promedio? Etc. En esta sección
se describirán algunos métodos básicos para inspeccionar un conjunto de
datos y como aplicar cálculos estadísticos básicos.

R tiene dentro de sus archivos conjuntos de datos propios para hacer análisis
estadísticos sencillos. Uno de estos conjuntos de datos se llama sunspot.year.
Este conjunto de datos tiene observaciones anuales registradas desde 1700
hasta 1988. El conjunto de datos sunspot.year se encuentra en forma “cruda.”

Si escribes sunspot.year en R obtendrás:

> sunspot.year
Time Series:
Start = 1700
End = 1988
Frequency = 1
[1] 5.0 11.0 16.0 23.0 36.0 58.0 29.0 20.0 10.0 8.0 3.0 0.0 0.0
[14] 2.0 11.0 27.0 47.0 63.0 60.0 39.0 28.0 26.0 22.0 11.0 21.0 40.0
[27] 78.0 122.0 103.0 73.0 47.0 35.0 11.0 5.0 16.0 34.0 70.0 81.0 111.0
[40] 101.0 73.0 40.0 20.0 16.0 5.0 11.0 22.0 40.0 60.0 80.9 83.4 47.7
[53] 47.8 30.7 12.2 9.6 10.2 32.4 47.6 54.0 62.9 85.9 61.2 45.1 36.4
[66] 20.9 11.4 37.8 69.8 106.1 100.8 81.6 66.5 34.8 30.6 7.0 19.8 92.5
[79] 154.4 125.9 84.8 68.1 38.5 22.8 10.2 24.1 82.9 132.0 130.9 118.1 89.9
[92] 66.6 60.0 46.9 41.0 21.3 16.0 6.4 4.1 6.8 14.5 34.0 45.0 43.1
[105] 47.5 42.2 28.1 10.1 8.1 2.5 0.0 1.4 5.0 12.2 13.9 35.4 45.8
[118] 41.1 30.1 23.9 15.6 6.6 4.0 1.8 8.5 16.6 36.3 49.6 64.2 67.0
[131] 70.9 47.8 27.5 8.5 13.2 56.9 121.5 138.3 103.2 85.7 64.6 36.7 24.2
[144] 10.7 15.0 40.1 61.5 98.5 124.7 96.3 66.6 64.5 54.1 39.0 20.6 6.7
[157] 4.3 22.7 54.8 93.8 95.8 77.2 59.1 44.0 47.0 30.5 16.3 7.3 37.6
[170] 74.0 139.0 111.2 101.6 66.2 44.7 17.0 11.3 12.4 3.4 6.0 32.3 54.3
[183] 59.7 63.7 63.5 52.2 25.4 13.1 6.8 6.3 7.1 35.6 73.0 85.1 78.0
[196] 64.0 41.8 26.2 26.7 12.1 9.5 2.7 5.0 24.4 42.0 63.5 53.8 62.0
[209] 48.5 43.9 18.6 5.7 3.6 1.4 9.6 47.4 57.1 103.9 80.6 63.6 37.6
[222] 26.1 14.2 5.8 16.7 44.3 63.9 69.0 77.8 64.9 35.7 21.2 11.1 5.7
[235] 8.7 36.1 79.7 114.4 109.6 88.8 67.8 47.5 30.6 16.3 9.6 33.2 92.6
[248] 151.6 136.3 134.7 83.9 69.4 31.5 13.9 4.4 38.0 141.7 190.2 184.8 159.0
[261] 112.3 53.9 37.5 27.9 10.2 15.1 47.0 93.8 105.9 105.5 104.5 66.6 68.9
[274] 38.0 34.5 15.5 12.6 27.5 92.5 155.4 154.7 140.5 115.9 66.6 45.9 17.9
[287] 13.4 29.2 100.2
Estos datos crudos pueden transformarse a algo más legible utilizando la
función data.frame. Así podemos crear un objeto nuevo llamado, por
ejemplo, sunspots, que contenga la tabla de datos de sunspot.year:

> sunspots<- data.frame(Year=1700:1988,Sunspot.Count=sunspot.year)


> sunspots

Year Sunspot.Count
1 1700 5.0
2 1701 11.0
3 1702 16.0
4 1703 23.0
5 1704 36.0
6 1705 58.0
7 1706 29.0
8 1707 20.0
9 1708 10.0
10 1709 8.0
11 1710 3.0
12 1711 0.0
13 1712 0.0
14 1713 2.0
15 1714 11.0
16 1715 27.0
17 1716 47.0
18 1717 63.0
19 1718 60.0
20 1719 39.0
21 1720 28.0
22 1721 26.0
23 1722 22.0
24 1723 11.0
25 1724 21.0
26 1725 40.0
27 1726 78.0
28 1727 122.0
29 1728 103.0
30 1729 73.0
31 1730 47.0
32 1731 35.0
33 1732 11.0
34 1733 5.0
35 1734 16.0
36 1735 34.0
37 1736 70.0
38 1737 81.0
39 1738 111.0
40 1739 101.0
41 1740 73.0
42 1741 40.0
43 1742 20.0
44 1743 16.0
45 1744 5.0
46 1745 11.0
47 1746 22.0
48 1747 40.0
49 1748 60.0
50 1749 80.9
51 1750 83.4
52 1751 47.7
53 1752 47.8
54 1753 30.7
55 1754 12.2
56 1755 9.6
57 1756 10.2
58 1757 32.4
59 1758 47.6
60 1759 54.0
61 1760 62.9
62 1761 85.9
63 1762 61.2
64 1763 45.1
65 1764 36.4
66 1765 20.9
67 1766 11.4
68 1767 37.8
69 1768 69.8
70 1769 106.1
71 1770 100.8
72 1771 81.6
73 1772 66.5
74 1773 34.8
75 1774 30.6
76 1775 7.0
77 1776 19.8
78 1777 92.5
79 1778 154.4
80 1779 125.9
81 1780 84.8
82 1781 68.1
83 1782 38.5
84 1783 22.8
85 1784 10.2
86 1785 24.1
87 1786 82.9
88 1787 132.0
89 1788 130.9
90 1789 118.1
91 1790 89.9
92 1791 66.6
93 1792 60.0
94 1793 46.9
95 1794 41.0
96 1795 21.3
97 1796 16.0
98 1797 6.4
99 1798 4.1
100 1799 6.8
101 1800 14.5
102 1801 34.0
103 1802 45.0
104 1803 43.1
105 1804 47.5
106 1805 42.2
107 1806 28.1
108 1807 10.1
109 1808 8.1
110 1809 2.5
111 1810 0.0
112 1811 1.4
113 1812 5.0
114 1813 12.2
115 1814 13.9
116 1815 35.4
117 1816 45.8
118 1817 41.1
119 1818 30.1
120 1819 23.9
121 1820 15.6
122 1821 6.6
123 1822 4.0
124 1823 1.8
125 1824 8.5
126 1825 16.6
127 1826 36.3
128 1827 49.6
129 1828 64.2
130 1829 67.0
131 1830 70.9
132 1831 47.8
133 1832 27.5
134 1833 8.5
135 1834 13.2
136 1835 56.9
137 1836 121.5
138 1837 138.3
139 1838 103.2
140 1839 85.7
141 1840 64.6
142 1841 36.7
143 1842 24.2
144 1843 10.7
145 1844 15.0
146 1845 40.1
147 1846 61.5
148 1847 98.5
149 1848 124.7
150 1849 96.3
151 1850 66.6
152 1851 64.5
153 1852 54.1
154 1853 39.0
155 1854 20.6
156 1855 6.7
157 1856 4.3
158 1857 22.7
159 1858 54.8
160 1859 93.8
161 1860 95.8
162 1861 77.2
163 1862 59.1
164 1863 44.0
165 1864 47.0
166 1865 30.5
167 1866 16.3
168 1867 7.3
169 1868 37.6
170 1869 74.0
171 1870 139.0
172 1871 111.2
173 1872 101.6
174 1873 66.2
175 1874 44.7
176 1875 17.0
177 1876 11.3
178 1877 12.4
179 1878 3.4
180 1879 6.0
181 1880 32.3
182 1881 54.3
183 1882 59.7
184 1883 63.7
185 1884 63.5
186 1885 52.2
187 1886 25.4
188 1887 13.1
189 1888 6.8
190 1889 6.3
191 1890 7.1
192 1891 35.6
193 1892 73.0
194 1893 85.1
195 1894 78.0
196 1895 64.0
197 1896 41.8
198 1897 26.2
199 1898 26.7
200 1899 12.1
201 1900 9.5
202 1901 2.7
203 1902 5.0
204 1903 24.4
205 1904 42.0
206 1905 63.5
207 1906 53.8
208 1907 62.0
209 1908 48.5
210 1909 43.9
211 1910 18.6
212 1911 5.7
213 1912 3.6
214 1913 1.4
215 1914 9.6
216 1915 47.4
217 1916 57.1
218 1917 103.9
219 1918 80.6
220 1919 63.6
221 1920 37.6
222 1921 26.1
223 1922 14.2
224 1923 5.8
225 1924 16.7
226 1925 44.3
227 1926 63.9
228 1927 69.0
229 1928 77.8
230 1929 64.9
231 1930 35.7
232 1931 21.2
233 1932 11.1
234 1933 5.7
235 1934 8.7
236 1935 36.1
237 1936 79.7
238 1937 114.4
239 1938 109.6
240 1939 88.8
241 1940 67.8
242 1941 47.5
243 1942 30.6
244 1943 16.3
245 1944 9.6
246 1945 33.2
247 1946 92.6
248 1947 151.6
249 1948 136.3
250 1949 134.7
251 1950 83.9
252 1951 69.4
253 1952 31.5
254 1953 13.9
255 1954 4.4
256 1955 38.0
257 1956 141.7
258 1957 190.2
259 1958 184.8
260 1959 159.0
261 1960 112.3
262 1961 53.9
263 1962 37.5
264 1963 27.9
265 1964 10.2
266 1965 15.1
267 1966 47.0
268 1967 93.8
269 1968 105.9
270 1969 105.5
271 1970 104.5
272 1971 66.6
273 1972 68.9
274 1973 38.0
275 1974 34.5
276 1975 15.5
277 1976 12.6
278 1977 27.5
279 1978 92.5
280 1979 155.4
281 1980 154.7
282 1981 140.5
283 1982 115.9
284 1983 66.6
285 1984 45.9
286 1985 17.9
287 1986 13.4
288 1987 29.2
289 1988 100.2
Ahora el conjunto de datos aparece de forma tabular

Ya que el conjunto de datos es bastante grande puede interesar examinar solo


las primeras filas (ó las últimas).

Utilizando la función head() se obtienen las primeras 6 filas. Mientras que


usando lafunción tail() se obtienen la últimas seis.
> head(sunspots)
Year Sunspot.Count
1 1700 5
2 1701 11
3 1702 16
4 1703 23
5 1704 36
6 1705 58

> tail(sunspots)
Year Sunspot.Count
284 1983 66.6
285 1984 45.9
286 1985 17.9
287 1986 13.4
288 1987 29.2
289 1988 100.2

Uno de los primeros cálculos estadísticos que se puede requerir es el cálculo


del promedio. Para esto se usa la función mean() .

> mean(sunspots[,2])
[1] 48.61349

También se podría escribir de la siguiente forma:

> mean(sunspots$Sunspot.Count)
[1] 48.61349

Si cinco cifrasdecimales es mucho para reportar entonces se puede redondear


usando la función round() y especificando el número de decimales:

> round(mean(sunspots$Sunspot.Count),digits = 3)
[1] 48.613
El máximo o el mínimo también podría ser de interés en una primera
isnpecciónde los datos. Las funciones max() y min() pueden usarse:

> max(sunspots$Sunspot.Count)
[1] 190.2
> min(sunspots$Sunspot.Count)
[1] 0

Si se quiere saber en quéaño ocurrió el máximo se usa la función which()


escribiendo:
> which(sunspots$Sunspot.Count==190.2)
[1] 258

El resultado nos indica la fila en la que se encuentra el valor máximo de


190.2 y de allí podemos deducir el año escribiendo:

> sunspots[258,]
Year Sunspot.Count
258 1957 190.2

Supóngase que se quiere saber cuántos años la variable (Sunspot.Count) es


menor a 19? Se puede escribir UN COMANDO conteo anidada en el objeto
del cual se quiere extraer los datos, es decir:

objeto[(which(variable<=19)),]

> sunspots[(which(sunspots$Sunspot.Count<=19)),]
Year Sunspot.Count
1 1700 5.0
2 1701 11.0
3 1702 16.0
9 1708 10.0
10 1709 8.0
11 1710 3.0
12 1711 0.0
13 1712 0.0
14 1713 2.0
15 1714 11.0
24 1723 11.0
33 1732 11.0
34 1733 5.0
35 1734 16.0
44 1743 16.0
45 1744 5.0
46 1745 11.0
55 1754 12.2
56 1755 9.6
57 1756 10.2
67 1766 11.4
76 1775 7.0
85 1784 10.2
97 1796 16.0
98 1797 6.4
99 1798 4.1
100 1799 6.8
101 1800 14.5
108 1807 10.1
109 1808 8.1
110 1809 2.5
111 1810 0.0
112 1811 1.4
113 1812 5.0
114 1813 12.2
115 1814 13.9
121 1820 15.6
122 1821 6.6
123 1822 4.0
124 1823 1.8
125 1824 8.5
126 1825 16.6
134 1833 8.5
135 1834 13.2
144 1843 10.7
145 1844 15.0
156 1855 6.7
157 1856 4.3
167 1866 16.3
168 1867 7.3
176 1875 17.0
177 1876 11.3
178 1877 12.4
179 1878 3.4
180 1879 6.0
188 1887 13.1
189 1888 6.8
190 1889 6.3
191 1890 7.1
200 1899 12.1
201 1900 9.5
202 1901 2.7
203 1902 5.0
211 1910 18.6
212 1911 5.7
213 1912 3.6
214 1913 1.4
215 1914 9.6
223 1922 14.2
224 1923 5.8
225 1924 16.7
233 1932 11.1
234 1933 5.7
235 1934 8.7
244 1943 16.3
245 1944 9.6
254 1953 13.9
255 1954 4.4
265 1964 10.2
266 1965 15.1
276 1975 15.5
277 1976 12.6
286 1985 17.9
287 1986 13.4

Para realizar cálculos estadísticos rápidos se puede usar la función summary()


la cual devuelve un resumen de algunos parámetros estadísticos (promedio,
desviación estándar, etc, etc). Escribimos summary(variable)

> summary(sunspots$Sunspot.Count)
Min. 1st Qu. Median Mean 3rd Qu.
0.00 15.60 39.00 48.61 68.90
Max.
190.20

R devuelve el valor mínimo (Min.), el primer cuartil ( 1st Qu.) la


mediana(Median), el promedio (Mean) el tercer cuartil ( 3rd Qu.) y el valor
máximo (Max.)

En la siguiente página:
https://stat.ethz.ch/R-manual/R-devel/library/stats/html/00Index.html

puedes encontrar las diferentes funciones estadísticas que R posee.


Capítulo 4. Importar y Exportar datos

Un proceso esencial en cualquier uso de software es la entrada y salida de


datos, lo que en inglés se conoce como In/Out o I/O. Cualquier serie de datos
que quiera ser analizada en R debe ser ingresada a R (debe ser importada a
R). También suele ocurrir que dichos datos deben ser informados o utilizados
posteriormente. Por tanto en necesario guardarlos en el disco duro o ser
distribuido en algún archivo para poder ser trabajado posteriormente. Esto
significa que los datos trabajados deberán ser exportados (fuera del R).
4.1 Importar datos
En general un conjuntos de datos se almacena más eficientemente en formato
de texto (* .txt). R utiliza la función read.table () para la entrada de los datos
en este formato y crea automáticamente un marco de datos (data frame) con
ellos.

Ejemplo (A TRABAJAR)

El R tiene varios conjuntos de datos cargados internamente. Una de estas


base se llama AirPassangers. Se trata de un conjunto de datos sobre en
número de pasajeros que viajaron mensualmente desde 1943 hasta 1960

Abra R y copie: AirPassengers

> AirPassengers
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1949 112 118 132 129 121 135 148 148 136 119 104 118
1950 115 126 141 135 125 149 170 170 158 133 114 140
1951 145 150 178 163 172 178 199 199 184 162 146 166
1952 171 180 193 181 183 218 230 242 209 191 172 194
1953 196 196 236 235 229 243 264 272 237 211 180 201
1954 204 188 235 227 234 264 302 293 259 229 203 229
1955 242 233 267 269 270 315 364 347 312 274 237 278
1956 284 277 317 313 318 374 413 405 355 306 271 306
1957 315 301 356 348 355 422 465 467 404 347 305 336
1958 340 318 362 348 363 435 491 505 404 359 310 337
1959 360 342 406 396 420 472 548 559 463 407 362 405
1960 417 391 419 461 472 535 622 606 508 461 390 432

Copie estos daos con su procesador y guárdelo como archivo de texto (.txt)
por ejemplo AirPassangers.txt. en el Escritorio (Desktop) de su computadora
(o en una carpeta que Ud desee-recordar donde lo guardó). Abra el archivo y
asegúrese de que se ha preservado el formato de los datos.
4.2 Establecer el directorio de trabajo

Para que R pueda leer un archivo debe ser informado o dirigido hacia el
directorio donde el archivo se encuentra. Esto se denomina el directorio de
trabajo (el escritorio(desktop) o donde ud halla guardado el archivo
AirPassengers.txt). Con el fin de informar a R donde se encuentra el archivo
externo se tiene que usar la función setwd ()

# Windows
> setwd ("C: / Documentos /Rafa / Escritorio /") # Adaptar esto según donde
se halla guardado el archivo

Para comprobar en cualquier momento en qué directorio R está trabajando se


usa la función getwd ():

> getwd ()
[1] " C: / Documentos /Rafa / Escritorio “
4.3 Leer datos

La función read.table() se usa para leer datos de archivo tipo .txt. Dicha
función lleva consigo un número de argumentos que permiten formatear un
conjuntos de apropiadamente para R.

En el caso del conjunto de datos AirPassengers, los datos están en un formato


común y por lo tanto debe ser fácil de leer en el uso de los argumentos
básicos para read.table().

Para introducir los datos en R desde el archivo externo "AirPassengers.txt" y


asignarlo a un objeto Pasajeros introduzca lo siguiente

> pasajeros<-read.table("AirPassengers.txt", header=TRUE, sep="")


> pasajeros
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1949 112 118 132 129 121 135 148 148 136 119 104 118
1950 115 126 141 135 125 149 170 170 158 133 114 140
1951 145 150 178 163 172 178 199 199 184 162 146 166
1952 171 180 193 181 183 218 230 242 209 191 172 194
1953 196 196 236 235 229 243 264 272 237 211 180 201
1954 204 188 235 227 234 264 302 293 259 229 203 229
1955 242 233 267 269 270 315 364 347 312 274 237 278
1956 284 277 317 313 318 374 413 405 355 306 271 306
1957 315 301 356 348 355 422 465 467 404 347 305 336
1958 340 318 362 348 363 435 491 505 404 359 310 337
1959 360 342 406 396 420 472 548 559 463 407 362 405
1960 417 391 419 461 472 535 622 606 508 461 390 432

Como puede ver Ud ha ingresado y R ha leído correctamente los datos del


archivo AirPassengers.txt

La función read.table() require que el nombre del archive a leer (externo) este
entre comillas (“file_name.txt”).

header=TRUE indica que la primera línea del archivo contiene los nombres
de las variables. Esto no tiene que ser declarado si el archivo no contiene
datos de cabecera.

sep="" indica que el separador de campo (es decir, lo que se separa los
valores de datos dentro del archivo). Un par de comillas indica 'espacio en
blanco', es decir, uno o más espacios, tabuladores, nuevas líneas o retornos

sep=" " indica datos separados por un espacio


sep="\t" indica datos separados por tabuladores (tab)
sep="\n" indica datos separados por una nueva línea (un dato en cada línea)

En el archivo Airpassenger.txt se usa sep=" " ya que los datos están separados
entre sí por uno o más espacios.

El otro tipo de archivo de datos que se usa comúnmente en R es el archivo de


tipo .csv (valores separados por comas). Estos archivos pueden ser
importados a R utilizando la función read.csv ()
4.4 Procesar datos
Vamos a realizar un procesamiento de datos sencillo para luego en la próxima
sección explicar como se exportan los datos en R.

Supongamos que queremos saber el número de pasajeros anuales y agregarlo


en una columna al final de nuestro conjunto de datos. Entonces usamos una
función
cbind() (para agregar una nueva columna) and rowSums() para sumar las
filas. La operación la hacemos juntas (para crear una nueva comuna que
llamaremos PassAnuales
> pasajeros$PasAnuales <- cbind(rowSums(pasajeros))
> pasajeros

Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec PasAnuales
1949 112 118 132 129 121 135 148 148 136 119 104 118 3040
1950 115 126 141 135 125 149 170 170 158 133 114 140 3352
1951 145 150 178 163 172 178 199 199 184 162 146 166 4084
1952 171 180 193 181 183 218 230 242 209 191 172 194 4728
1953 196 196 236 235 229 243 264 272 237 211 180 201 5400
1954 204 188 235 227 234 264 302 293 259 229 203 229 5734
1955 242 233 267 269 270 315 364 347 312 274 237 278 6816
1956 284 277 317 313 318 374 413 405 355 306 271 306 7878
1957 315 301 356 348 355 422 465 467 404 347 305 336 8842
1958 340 318 362 348 363 435 491 505 404 359 310 337 9144
1959 360 342 406 396 420 472 548 559 463 407 362 405 10280
1960 417 391 419 461 472 535 622 606 508 461 390 432 11428

Puede verse como se ha agregado una nueva columna con el procesamiento


de datos realizado
4.5. Exportar datos

Imagínese que la tabla obtenida arriba (la tabla modificada que incluye el
procesamiento de datos) desea ser exportada, por ejemplo guardada en un
archivo.

Para guardar un objeto creado en R en el disco, la función write.table() se


utiliza en una manera similar a la de read.table (). En primer lugar se declara
el objeto a guardar (exportar), seguido del nombre del archivo deseado y el
tipo de archivo sufijo entre comillas, y luego los argumentos siguientes.

En primer lugar asegúrese de seleccionar el directorio de trabajo deseado y


modificar el presente si es necesario:

El objeto entonces se puede exportar utilizando la función write.table ()

> write.table(pasajeros, "pasajeros1.txt", col.names = NA, row.names = TRUE, quote = FALSE, sep =
"\ t")

En muchos casos, la combinación argumento de col.names = TRUE,


row.names = FALSE se utiliza para indicar que se requiere los nombres de
las variables en la salida en ligar del sistema tradicional que R los presenta
[1], [2], [3], etc.)

Si Ud abre el directorio de trabajo encontrará que se ha creado el archivo


pasajeros1.txt el cual puede ser abierto tal como se explicó en la sección de
importación de datos o con un procesador de texto.
Capítulo 5. Gráficos

R tiene la capacidad para generar gráficos a partir de un conjunto de datos.


Estos gráficos pueden ser simple o altamente complejos dependiendo de la
necesidad.

Esta sección se centrará principalmente en la producción de gráficos de líneas


y gráficos de dispersión, y demuestra la flexibilidad considerable el usuario
tiene en el control del formato y la composición de un gráfico.
5.1. Tipos de gráficos estándar

En R es bastante sencillo producir gráficos tradicionales, especialmente en el


nivel más básico.

Se presentaran algunos ejemplos básicos. Sin embargo, cada uno de los


siguientes ejemplos se puede personalizar mucho más allá, utilizando los
argumentos de cada una de las funciones generadoras de gráficos.

TODAS LAS BASES DE DATOS QUE SE MENCIONAN EN ESTA


SECCION SON PROPIAS DE R

Gráficos de barras:

Se usa la función barplot(). Escriba en R barplot (VADeaths)

VADeaths es una base de datos que contiene las tasas de mortalidad por
grupo de edades (datos no mostrados +) por 1.000 en Virginia en el año 1940

Diagramas de caja:[función boxplot() ]

> boxplot(len ~ dose, ToothGrowth, subset = supp=="VC")


# Crecimiento de dientes en cerdos (eje y en mm) en respuesta a tres dosis de vitamina C
Histogramas [función hist() ]

>hist(islands) #numero de áreas que exceden los 10000 metros cuadrados en las islas

Diagramas de tortas[función pie() ]

> pie(1:15, col = rainbow(15)) # Rainbow palette in fifteen segments


5.2. Diagrama de dispersión
> plot(cars)

Los diagramas de dispersión se realizan con la función plot(), lo que genra un


gráfico básico del tipo x vs y. Tomemos la base de datos tres (contenida en
R) que consiste es la altura volumen y otras características de 31 arboles

> trees
Girth Height Volume
1 8.3 70 10.3
2 8.6 65 10.3
3 8.8 63 10.2
4 10.5 72 16.4
5 10.7 81 18.8
6 10.8 83 19.7
7 11.0 66 15.6
8 11.0 75 18.2
9 11.1 80 22.6
10 11.2 75 19.9
11 11.3 79 24.2
12 11.4 76 21.0
13 11.4 76 21.4
14 11.7 69 21.3
15 12.0 75 19.1
16 12.9 74 22.2
17 12.9 85 33.8
18 13.3 86 27.4
19 13.7 71 25.7
20 13.8 64 24.9
21 14.0 78 34.5
22 14.2 80 31.7
23 14.5 74 36.3
24 16.0 72 38.3
25 16.3 77 42.6
26 17.3 81 55.4
27 17.5 82 55.7
28 17.9 80 58.3
29 18.0 80 51.5
30 18.0 80 51.0
31 20.6 87 77.0

Graficaremos la circunferencia (girth) contra la altura (height) del árbol.

Tome nota que dentro de los paréntesis de la función plot primero se escribe
lo que quereos que vaya en el eje x y luego lo que queremos que vaya en el
eje y. Para especificar si se quiere un grafico de puntos, línea o ambos el
argumento type “” debe ser usado. Los valores son:
type =”p” (points, este es por default, no hace falta especificarlo
type = “l” (líneas)
type = “b” (ambos)

entonces para hacer el mismo grafico pero con puntos y líneas a la vez
escribimos:

> plot(trees$Girth, trees$Height, type= "b")


5.3. Formateo (cambio) de Ejes

En el ejemplo anterior se graficó la relación entre circunferencia y altura de


31 árboles. EL grafico está muy bien para inspeccionar rápidamente la
relación entre las dos variables, pero requiere un poco de trabajo en su
estética si debe ser presentado o publicado.

Los títulos de los ejes se pueden cambiar (formatear) mediante losl


argumentos xlab argumentos y ylab dentro de la función plot().
> plot(trees$Girth, trees$Height, xlab="circunferencia (pulgadas)", ylab=" altura (metros)")

Nótese como se han agregado las etiquetas al gráfico: en el eje x se ha


colocado la etiqueta de circunferencia (pulgadas)", y en el de las Y altura
(metros).

Para este gráfico, las x y el valor del eje y rangos parecen razonables. Sin
embargo, estos también pueden establecerse manualmente utilizando xlim y
Ylim, con cada argumento que contiene el máximo valor límite eje y mínimo.

Con el siguiente comando cambiamos los valores de los ejes: el de las x que
sea de 8 a 21 y el de las y de 60 a 90.

> plot(trees$Girth, trees$Height, xlim=c(8,21), ylim=c(60,90))


5.4. Cambio del carácter y tamaño del carácter del gráfico

Con el argumento pch=”” se puede cambiar el tipo de caracter que se grafica


(hasta ahora usamos el circulo vacío, que es el que por default hace el
software de R) y con el cex =”” el “grosor” del carácter. Así pues si
queremos triángulos en lugar de círculos y el doble de tamaños escribimos:

> plot(trees$Girth, trees$Height, xlab="circunferencia (pulgadas)", ylab=" altura


(metros)", xlim=c(8,21), ylim=c(60,90), pch=4, cex= 2)

A continuación todo los tipos de “caracteres” con los que se pueden construir
gráficos y sus códigos respectivos (pch=carácter”)
5.5. Cambio de colores

R permite que se especifiquen colores por su nombre, por su valor interno


asociado, o como paletas de colores (por ejemplo RGB, HSV, rainbows (),
heat.colours (), etc.). Para mostrar los nombres de los 657 colores estándar
interno para R, escribe:

> colors() #se muestran los primeros 102 colores (son 657 en total)

[1] "white" "aliceblue" "antiquewhite"


[4] "antiquewhite1" "antiquewhite2" "antiquewhite3"
[7] "antiquewhite4" "aquamarine" "aquamarine1"
[10] "aquamarine2" "aquamarine3" "aquamarine4"
[13] "azure" "azure1" "azure2"
[16] "azure3" "azure4" "beige"
[19] "bisque" "bisque1" "bisque2"
[22] "bisque3" "bisque4" "black"
[25] "blanchedalmond" "blue" "blue1"
[28] "blue2" "blue3" "blue4"
[31] "blueviolet" "brown" "brown1"
[34] "brown2" "brown3" "brown4"
[37] "burlywood" "burlywood1" "burlywood2"
[40] "burlywood3" "burlywood4" "cadetblue"
[43] "cadetblue1" "cadetblue2" "cadetblue3"
[46] "cadetblue4" "chartreuse" "chartreuse1"
[49] "chartreuse2" "chartreuse3" "chartreuse4"
[52] "chocolate" "chocolate1" "chocolate2"
[55] "chocolate3" "chocolate4" "coral"
[58] "coral1" "coral2" "coral3"
[61] "coral4" "cornflowerblue" "cornsilk"
[64] "cornsilk1" "cornsilk2" "cornsilk3"
[67] "cornsilk4" "cyan" "cyan1"
[70] "cyan2" "cyan3" "cyan4"
[73] "darkblue" "darkcyan" "darkgoldenrod"
[76] "darkgoldenrod1" "darkgoldenrod2" "darkgoldenrod3"
[79] "darkgoldenrod4" "darkgray" "darkgreen"
[82] "darkgrey" "darkkhaki" "darkmagenta"
[85] "darkolivegreen" "darkolivegreen1" "darkolivegreen2"
[88] "darkolivegreen3" "darkolivegreen4" "darkorange"
[91] "darkorange1" "darkorange2" "darkorange3"
[94] "darkorange4" "darkorchid" "darkorchid1"
[97] "darkorchid2" "darkorchid3" "darkorchid4"
[100] "darkred" "darksalmon" "darkseagreen"
Así pues si queremos hacer el grafico anterior con color rojo oscuro (darkred)
podemos escribir en R el siguiente commando:

> plot(trees$Girth, trees$Height, xlab="circunferencia (pulgadas)", ylab=" altura (metros)",


xlim=c(8,21), ylim=c(60,90), pch=17, cex= 2, col="darkred")
5.6 Agregar una línea que ajuste al gráfico.

Suponga que quiere agregar una línea de ajuste que describa a tendencia de
los datos. De esta manera se podrá interpretar mejor el gráfico. Para ello
usamos la función abline (). Para agregar dicha línea al grafico anterior
escribimos en R:

abline(lm(trees$Height~trees$Girth))

lm=modelo lineal,
trees$Height~trees$Girth = la variable Height en función de Girth

el gráfico se muestra abajo


5.7 Agregando el Título al gráfico

La función de title() es otro comando para agregar características a gráficos


que ya han sido elaborados. Su uso se explica mejor a través del uso de un
ejemplo

> plot(trees$Girth, trees$Height, xlab="circunferencia (pulgadas)",


ylab=" altura (metros)", xlim=c(8,21), ylim=c(60,90))

> title("Altura y circunferencia de 31 arboles Cerezo Negro",


cex.main=1, font.main=2)
Bibliografía utilizada (y para profundizar):

“R para Principiantes” (versión española de “R for Beginners”, traducido por


Jorge A. Ahumada)

“Introducción a R” (versión española de “An Introduction to R” por Andrés


González and Silvia González)

“Gráficos Estadísticos con R” por Juan Carlos Correa and Nelfi González.

“Cartas sobre Estadística de la Revista Argentina de Bioingeniería” por


Marcelo R. Risk.

“Introducción al uso y programación del sistema estadístico R” por Ramón


Díaz-Uriarte
Respuestas a ejercicios

Ejercicio 1.3.1

> torr = function(a,b,c){


+ result = a*b*c
+ print(result)
+}

torr de 2,4,5:
> torr(2,4,5)
[1] 40

Sin la función torr


> 2*4*5
[1] 40

Ejercicio 1.3.2

# respuesta al ejercicio 1.3.2


> u <- c(7,7,7) #crear objeto u
> v <- c(3,4,5) #crear objeto v
> w <- c(0,1,0) #crear objeto w
> ls() #para obtener un listado de los objetos
[1] "u" "v" "w"
> u+v+w # para sumar los tres objetos
[1] 10 12 12
> u*v*w #para multiplicar
[1] 0 28 0
> rm(u,v) # para remover los objetos u y v
> ls() #vuelvo a listar
[1] "w"
#solo me queda “w”
> w/2 # dividir w entre 2
[1] 0.0 0.5 0.0
> 1/0 # para dividir 1 entre cero (¿?)
[1] Inf
> #ya me parecía que no se podía dividir por cero

Ejercicio 2.1
> U <-24:85
> U <-24:85 #defina un objeto llamado U que contenga una secuencia de
números del 24 al 85
> U[25]
[1] 48
> U[25] #¿Cual es el 25 avo elemento de U?
[1] 48
> U[c(5,28)] #¿Cuales son los elementos en la posición 5 y 28?
[1] 28 51
> #Muestre todos los elementos de U menos el 28avo
> U[-28]
[1] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48
[26] 49 50 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
73 74
[51] 75 76 77 78 79 80 81 82 83 84 85

Ejercicio 2.2

#crear df1

> df1 <-data.frame(H = 1:5, J =25:21 , L = rep(1,5))


> df1
H JL
1 1 25 1
2 2 24 1
3 3 23 1
4 4 22 1
5 5 21 1

> #a)Extraer todos los valores de la columna 1.


> df1[,1]
[1] 1 2 3 4 5
> #ó
> df1$H
[1] 1 2 3 4 5
> > #b) Extraer las filas 2 a 4 de la columna 2.
> df1$J[2:4]
[1] 24 23 22
> #ó
> df1[,c(2:4)]
Error in `[.data.frame`(df1, , c(2:4)) : undefined columns selected
> df1[2:4,2]
[1] 24 23 22
> #c) Extraer los valores en la fila 5 para todas las columnas
> df1[5,]
H JL
5 5 21 1
> #d) Extraer de los valores de las filas 1a 4 y de las columnas 1 y 3 en el
formato de trama de datos

> as.data.frame(df1[1:4,c(1,3)])
HL
111
221
331
441
>

You might also like