Introducción A R Utilizando Rstudio Server
Introducción A R Utilizando Rstudio Server
Introducción A R Utilizando Rstudio Server
ar)
Introduccin a R utilizando
Rstudio y Rstudio-server
Por Edwin Aguiar
INTA EEA Corrientes (Grupo Tics Corrientes)
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin No Comercial- Compartir Igual 3.0
Unported. Para ver una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc-sa/3.0/.
2 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
ndice
Introduccin, sentido y alcance 2
1 Por qu no Excel? 2
2 Qu se necesita para usar este manual? 3
3 Conocer la interfaz de Rstudio 5
4 Panel de script 5
5 Abrir un script 6
6 Crear un script 6
7 Panel consola (Console) 6
8 Panel espacio de trabajo (Workspace) 8
9 Panel de Archivos, Paquetes, Graficas y Ayuda 10
El lenguaje R y algunas funciones 11
1 Presupuestos bsicos 11
2 Iniciando R 11
3 Objetos como entidades 13
4 operaciones con objetos 14
Algunos objetos en particular 15
1 introduccin al tipo de datos 15
2 vectores (arrays o arreglos) 17
a. Una definicin formal, creacin y manipulacin 17
b. Operacin con vectores 19
c. Operaciones entre un vector, operadores y funciones 20
d. Operaciones entre vectores 21
e. Poner nombres al ndice: una razn 22
f. Vectores de caracteres 22
g. Vectores lgicos, introduccin a la lgica matemtica 24
3 Factores: un ordenamiento categrico 24
4 Matrices: definiciones y operaciones 25
a. Operaciones elementales sobre matrices 25
b. Operaciones con filas o columnas en matrices 29
c. Un ejemplo real de trabajo con una matriz 31
d. Mas operaciones y funciones con matrices 32
5 Listas 33
a. Aplicando funciones a listas vectores y matrices 37
6. Series temporales 38
7. Dataframes 39
8. Operadores y funciones 41
a. Una noticia, varios ejercicios 43
b. Como hacer secuencias numricas 45
9. Leer y guardar datos 46
a. Repositorio de datos 46
b. Para comenzar e iniciar sesin en Rstudio 46
c. Configurar directorio de trabajo 49
d. Errores 49
e. Lecturas desde archivos 50
3 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
f. Escritura hacia archivos 52
g. Desde la web 53
h. Excel y otros tipos de formatos 53
i. Conexiones ODBC, lectura y escritura en Bases de Datos 54
j. Introduccin al mundo de las Bases de Datos Relacionales 56
k. R y MySql 57
l. Conductos ODBC 58
m. Como grabar datos en MySql 58
n. Otra forma de guardar en MySql 59
Creacin de un proyecto partiendo de cero 60
a. Pasos del proyecto 62
b. Fuente de datos 62
c. Iniciando el proyecto 63
d. A escribir se ha dicho 64
e. Distancias (concepto) 65
f. Conclusin del dendograma 66
g. Guardando grficos 66
h. Finalizando el proyecto 67
Libreras en R 68
a. Libreras precargadas 68
b. Libreras que no estn cargadas ni instaladas 69
c. Y si no tengo internet? 70
d. Repositorios de R 71
Graficas con R y Rstudio 73
a. ndice y ejemplos de algunas funciones graficadoras 73
b. Las distribuciones en 3D 74
c. Aspectos generales sobre grficos 79
d. Ejemplos de plot() 79
e. Uso de barplot() 80
f. Realizar varios grficos en una sola pantalla 80
g. Parmetros adicionales a los grficos 81
h. Ejemplo de grafica bidimensional 81
i. Ejemplo de graficacin multidimensional 85
j. Concluyendo 87
Bibliografia 89
4 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Introduccin: sentido y alcances
La intencin de este documento no es ser un manual ni una gua de R, sino solo una exposicin de
algunos mtodos para trabajar R mediante la interfaz de Rstudio, esta es una aplicacin grafica
(frontend) de R y un servidor de R que permite el uso desde cualquier punto de la red interna o
externa que posea la capacidad de conexin a dicho servicio. Adems tratamos sobre como se
complementa con el acceso y trabajo en MySql, una base de datos relacional que nos permite
cargar tambin remotamente los datos de nuestros trabajos/investigaciones y luego desde un
script de R ejecutar las operaciones estadsticas, de calculo o de minera de datos que
necesitemos.
1. Por qu no Excel?
Las ventajas de este sistema estn dadas por varios
factores. El primero es la seguridad (un servidor es mas
seguro y eficiente en trminos generales que una pc
individual, ya que cuenta con sistemas de contingencias
elctricas, seguridad fsica y lgica, actualizacin y backup
permanente, etc); la disponibilidad (porque al no estar
fsicamente en ningn lado pero si virtualmente en la
nube o en una red LAN permite acceder desde cualquier punto conectado); la no instalacin y
mantenimiento de otro programa en una pc sobrecargada con el riesgo consiguiente de fallo o
perdida de datos por colapso de dicha pc; el acceso seguro desde cualquier plataforma que integre
la web (Android, Apple IOS, Linux, Windows) con independencia total del hardware que usted
utilice y finalmente que esta configuracin de servers de R y Mysql son de uso libre y gratuito (no
poseen licencias de pago) y de uso intenso por investigadores y cientficos de todas las
universidades, organismos de investigacin y desarrollo, gobiernos, empresas y particulares.
Al respecto sobre el uso de Excel como base de datos, nos advierte el Dr Duncan Golicher
1
muchos estudiantes piensan que una hoja de clculo como Excel es una base de datos. No lo es.
Manejar Excel como una base de datos relacionada es posible, pero no es nada fcil, ni para
usuarios expertos que saben programar en Visual Basic para aplicaciones. Para un usuario normal
sin experiencia con bases de datos sera imposible manejar datos con una estructura jerrquica
compleja en Excel. En cambio, muchas cosas que son difciles en Excel son fciles en una base de
datos1. Adems la exportacin de datos de una base de datos a Excel para su procesamiento
siempre es fcil. Hasta con ODBC se puede hacer una conexin directo para que Excel puede usar la
potencia del structured query language directamente.
Es comn encontrar una resistencia a tomar el camino del uso de bases de datos entre usuarios con
algo de experiencia intermedia con Excel. Al tener contacto con una base de datos de verdad como
Access, MySQL o PostgreSQL usuarios quienes han encontrado sus propios mtodos de lograr
resultados en Excel frecuentemente se quejan que el programa no les deja estructurar y capturar
1
Como mantener tus datos de investigacin ordenados Duncan Golicher, February 13, 2008
Nota 1
Aunque este documento verse sobre
Rstudio server y su uso a travs del
navegador web, es perfectamente
aplicable a un Rstudio instalado en su pc.
5 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
los datos como quieren. Exactamente! Muy bien. Esta es precisamente su mayor ventaja. Si
quieres mantener tus datos con una estructura que no es posible en una base de datos, entonces
estas ciertamente pensando en una estructura equivocada para tus datos. Por todo lo lgico que te
parezca, tu estructura casi siempre va a ser difcil de comunicar a los dems y probablemente va a
causarte muchos problemas al largo plazo.
En la imagen lateral podemos
apreciar el software RStudio
corriendo desde un navegador
WEB en un entorno Windows
7. En el detalle de la consola
se aprecia que R corre en un
servidor Linux (Debian). En el
escritorio de Windows
tambin se aprecian
avanzadas herramientas de
investigacin botnica(Plants
vs Zombies).
La creacin de un servidor con Debian (Linux), la instalacin y funcionamiento del servidor de
bases de datos MySql, la creacin de conductos ODBC, la instalacin y configuracin de Rstudio
server, la administracin de usuarios que acceden a R la
dejaremos para otro documento, ya que se requieren
conocimientos especficos sobre varias cuestiones
anexas, en esta guia solo nos enfocaremos en el usuario,
un tcnico o profesional de otras ciencias que requiera el
uso de R dentro de un entorno institucional o en su
propio sistema.
2. Que se necesita para utilizar este manual?
La lista de requerimientos:
Una pc, con acceso a internet
Conocimientos sobre estadsticas y matemticas
acordes a su profesin
Quizs 1500 cc de masa enceflica, aunque esto
puede ser optativo
Partimos del presupuesto bsico que el usuario posee las nociones de estadstica bsicas,
distribuciones, etc., que incluso haya utilizado Infostat, este software es en realidad un frontend
de R. Es decir que el ncleo de Infostat es R. De hecho R es una consola de comandos, lo que
hacen programas como RComander, Rstudio e Infostat es presentar una interfaz amigable para
evitar pasos intermedios o el tipeo de una serie de parmetros que son quienes ejecutan las
Nota 2
Por qu Debian? Rstudio server puede ser
adaptado para cualquier distribucin de
Linux, en Debian ya ha sido ajustada
(compilada) para trabajar con solo dos
clics. En Windows no es posible correr el
server de Rstudio, salvo, claro esta, que
virtualicemos con VirtualBox (Oracle) el
mencionado Debian. Esto solo tendra
sentido en una red lan en la que varias
maquinas utilicen Rstudio, si es solo una
individual Rstudio (no server) corre en
Windows y Linux sin mas tramite que
instalar R previamente.
6 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
sentencias y provocan las salidas de pantalla. De todas maneras si no posee experiencia en
Infostat o R este manual tratara de guiarlo mediante un esquema de conocimiento basado en un
crecimiento secuencial mediante la practica del texto.
No tema meter manos en Rstudio, siga las indicaciones de los ejemplos y profundice con sus
propias necesidades las lagunas que necesariamente contiene este documento.
3. Conocer la interfaz de Rstudio
En la imagen vemos que hay
cuatro paneles iniciales, los
dos verticales de la derecha
y dos de fondo oscuro a la
izquierda. En todos ellos es
posible configurar pestaas
que a su vez contienen
otros elementos. Sus
nombres, de izquierda a
derecha verticalmente, son:
Panel de script o de source o cdigo fuente del script, arriba a la izquierda.
Panel de consola o salida de R, abajo a la izquierda.
Panel de Espacio de trabajo, variables o historia; arriba a la derecha.
Panel de ayuda, salida grafica, paquetes etc; abajo a la derecha
4. Panel de Script
Este primer panel es donde
cargamos desde un archivo
con extension .r, por
ejemplo script_algo.r o
creamos el codigo que
deseamos que ejecute R (y
luego guardamos). Para
cargar un script ya existente
se hace desde el menu
File Open File o desde la carpeta debajo de iconos del menu. Tambien existe un atajo de
teclado CTRL+O que abre el menu de donde seleccionamos el script que necesitamos. Estos, como
mencionamos en un parrafo anterior, se distinguen por su extension es .R En el ejemplo de la
imagen el script guardado es script_conexionDB.R.
Los nombres de sus script los determina ud, debe tener en cuenta que tengan una nomenclatura
que le recuerde el objeto del mismo y su version. Es muy comun despues de un tiempo olvidarse
para que era tal o cual, o como se llamaba ese que esta buscando. Tambien a ese respcto es una
buena idea comentar el codigo que se escribe, con aclaraciones sobre el objeto de cada paso.
7 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Tambien es usual que se usen varios scripts en un solo proyecto, ya que ellos realizarian un trabajo
determinado cada uno; de esta forma es posible reutilizar los mismos en varias cosas sin tener
necesidad de escribir un solo script largo y complejo. En programacion a esto se le denomina
dividir para vencer, resolver el problema por partes sencillas que conforman una solucion
general.
5. Abrir un script
Al seleccionarlo aparece el panel de script (si no estaba) y
el codigo. En este ejemplo es un conector a una base de
datos para obtener una variable llamada bruto desde
una tabla Datos. Para simplificar hemos restringido los
datos a solo 100, ya que la Datos posee mas de 15mil
registros.
Mas adelante veremos como seleccionar datos desde
nuestras tablas, particularizando lo que se denomina
query, consulta en lenguaje sql.
No se preocupe si en este momento no comprende el
cdigo o le es confuso, mas adelante lo explicaremos en
detalle, por ahora nos concentraremos en la lgica de trabajo de Rstudio, luego pasaremos al
lenguaje R.
6. Crear un script nuevo
Desde el men FILE selecciona NEW y de all la opcin R Script, tambin con el icono debajo de
FILE que posee un signo + en un circulo verde y por supuesto con el atajo de teclado
CTRL+SHIFT+N
Al darle la opcin de guardar a su script, le podr colocar el nombre que desee al mismo. Tambin
es relevante que configure un directorio en donde guardara sus scripts, archivos, proyectos y
salidas, tema que tambin trataremos mas adelante en el texto.
7. Panel de Consola
En este panel se obtienen las
salidas de los scripts, pero
tambin es el sitio en donde
se puede escribir cdigo
directamente para ver
resultados. Lo que escriba
aqu no se guardara en el
script, es una salida de
prueba o transitoria.
Nota 3
Qu es una base de datos relacional y
MySql? Una base de datos es una coleccin
de tablas que contienen registros y se
hallan relacionadas entre si por algn tipo
de ndice. A diferencia de una planilla de
calculo estn diseadas para contener
registros y realizar operaciones ABM (Altas,
bajas y modificaciones) o CRUD (en ingles).
MySql es una de las ms populares en el
mundo web (la usa Google y Facebook por
ejemplo) y es libre y gratuita.
8 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Sin embargo es posible guardar el estado de esta pantalla (y tambin el panel de variables e
historia) en un archivo de workspace (espacio de trabajo) el cual es posible cargar
posteriormente o indicar por defecto uno en especial. Este espacio se guardar cuando al salir del
programa le interrogara si desea preservarlo o no. En la imagen vemos como se rescata parte del
cdigo de history y se vuelve a ejecutar en la consola de comandos:
Cmo se carga desde history el cdigo fuente? Copiando y
pegando a la consola de comandos o utilizando el botn
To Console como vemos en la imagen; tambin es
posible copiar al script con el otro botn de To Source
Cmo se trabaja en la consola? Escribiendo las funciones y sus
parmetros. En general casi todo aqu son funciones que realizan
determinados clculos en base a parmetros que usted introduce. Un
ejemplo:
t i pee en l a consol a 2+3 y [ ent er ] , l a sal i da ser 5.
Ha efectuado una simple suma. Si corremos el script de la primera pantalla nos saldr el resultado
de la imagen. Si tenemos una variable llamada P y la llamamos nos dar una pantalla de
nmeros, pero no as si llamamos a p. R es case sensitive o sea sensible a las maysculas. No
es lo mismo p que P
Hagamos una salida y probemos:
en la pantalla de script cargamos
un cdigo, ahora pinte con el
cursor parte del texto. Luego con
esta seleccin pulse Run en la
parte superior derecha de Script.
Esto ejecutara el script en la
Nota 4
Por qu escribir ; al final de la lnea de cdigo? Es una convencin
de programacin que indica que se ha llegado al final de la instruccin.
Sin embargo puede escribir el final de la lnea sin el punto y coma, el
script o comando funcionara aunque la buena prctica es colocarlo ya
que evitara posibles mal interpretaciones y errores de ejecucin.
9 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
consola (y har otras cosas mas). La lnea seleccionada tendr una salida por consola indicando el
estatus y si todo este bien, que no falten otras variables, funciones etc:
El resultado ser el de la pantalla que ilustra este
apartado, constatamos que en el panel de
Workspace existe P y no p, panel que
describiremos en el prximo tem.
Observemos ahora al vector P, por consola
extraemos su informacin mediante el uso de
funciones.
Las funciones son una serie de cdigos que se hallan
implcitos en las libreras de R y que al llamarlas con
un nombre, cargar uno o ms parmetros, realizan
una operacin determinada. Esas funciones son en
realidad una compleja serie de cdigos que alguien
ha programado y puesto a disposicin de los
usuarios.
En este ejemplo usaremos varias funciones de un
solo parmetro que nos dar informacin
relevante, que podemos ver en la imagen.
length(P) nos dara la longitud del vector
sum(P) es la sumatoria de los valores que componen el vector
mean(P) es el promedio matemtico del vector
median(P) es la mediana del vector y
sort(P) es el ordenamiento del vector de menor a mayor.
Para finalizar este apartado, si usted llena la consola y desea limpiarla solo debe
pulsar CTRL+L y despejara la vista.
10 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
8. Panel de Workspace e History
El panel de Espacio de trabajo e historia
2
nos remite a donde se pueden visualizar las
distintas variables que se van generando,
en la primera imagen vemos las variables
que se han capturado al correr el script: All
observamos apellidos que consiste en
una matriz de 100x2 elementos. Mas tarde
volveremos a ella para visualizar sus
valores. En la segunda imagen del apartado
tenemos la historia de los distintos
comandos que hemos ido introduciendo
durante una ejecucin.
Este historial se puede eliminar por
completo al pulsar la escobilla o eliminar
selectivamente en partes sealando las
lneas y utilizando el botn con la equis roja. Al salvar el Workspace guardara tambin, adems de
las variables, este historial depurado.
9. Panel de Files, Plots, Packages, Help
El panel de archivos, salidas graficas, paquetes y ayuda
es muy verstil y til. En sus distintas pestaas
encontramos utilidades de navegacin por directorios
donde tengamos archivos, salidas graficas que
podemos exportar a varios formatos o visualizar en una
pantalla aparte con un zoom, la instalacin de libreras
(paquetes) que nos permiten ampliar las funciones de
Rstudio (como el ejemplo del script que requiere
Rodbc) mediante el acceso directo a los repositorios
en la Internet o desde un archivo que hayamos
descargado y copiado a nuestro sistema si estamos fuera de lnea y las ayudas. El repositorio que
2
Suena igual a un ONG de alguna cosa No?
11 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
por defecto utilizamos es Argentina (La Plata) -
Universidad Nacional de La Plata aunque tambin
podemos optar (dentro de nuestro pas) por Argentina
(Mendoza) Conicet Mendoza o por cualquiera de los
86 repositorios en varios pases y universidades del
mundo. En el men TOOLS -> OPTIONS opcin CRAN
MIRROR se selecciona desde donde obtener los
paquetes y actualizar R.
En la consola trabajamos con P y tomamos varias
medidas estadsticas utilizando funciones de R y graficando el vector P que esta ordenado de
menor a mayor:
En la imagen mas pequea realizamos la desviacin
estndar a mano: raz cuadrada de varianza
sqr t ( var ( P) )
Como se podr el valor 40 que es predominante en
este anlisis con una frecuencia de 45% del total de las
muestras y en la graficacin de barras es comprobable visualmente:
Como colofn a este breve ejercicio de uso de consola, ayuda y graficas, comprobamos que la
sumatoria de las frecuencias sea correcta, con sum( pr op. t abl e( x) ) y cuyo resultado 1 es el
100% de las muestras.
12 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Para comprender que significan prop.table() sum() y
otras funciones recuerde que esta la ayuda, en dicha
pestaa puede introducir el termino que desea conocer o
navegar entre los paquetes (pestaa packages) y all
encontrara las explicaciones al respecto; sin embargo si
aun as no halla lo que desea (por ejemplo como realizar
determinado calculo o dudas sobre funciones) posee la
lista de R en espaol en cuyo mbito cientficos y tcnicos de todas las disciplinas intercambian
informacin y ayuda desinteresadamente.
Con esto hemos llegado al resumen de los paneles de Rstudio, de los que en el men podr
tambin acceder y realizar operaciones desde los numerosos submens.
El lenguaje R y algunas funciones
1. Presupuesto bsico
Estimamos que Ud. posee conocimientos de estadstica, por lo que omitiremos los conceptos
inherentes a, si en cambio como realizar las operaciones y procedimientos para alcanzar el manejo
fluido de Rstudio-server (o Rstudio en su pc). Tambin en necesario poseer nociones de
matemticas.
En este apartado nos introduciremos en el lenguaje de scripts de R y en el manejo de algunas
funciones genricas (y no tanto) como ejemplos de trabajo. Posteriormente trabajaremos en la
adquisicin de datos mediante varias formas (archivos excell, csv, DB etc)
3
.
2. Iniciando R
Cuando arranca RStudio aparece en la consola una leyenda explicativa:
R ver si on 2. 14. 1 ( 2011- 12- 22)
Copyr i ght ( C) 2011 The R Foundat i on f or St at i st i cal Comput i ng
I SBN 3- 900051- 07- 0
Pl at f or m: x86_64- pc- mi ngw32/ x64 ( 64- bi t )
R es un sof t war e l i br e y vi ene si n GARANTI A ALGUNA.
Ust ed puede r edi st r i bui r l o baj o ci er t as ci r cunst anci as.
Escr i ba ' l i cense( ) ' o ' l i cence( ) ' par a det al l es de di st r i buci on.
R es un pr oyect o col abor at i vo con muchos cont r i buyent es.
Escr i ba ' cont r i but or s( ) ' par a obt ener ms i nf or maci n y
' ci t at i on( ) ' par a saber cmo ci t ar R o paquet es de R en publ i caci ones.
Escr i ba ' demo( ) ' par a demost r aci ones, ' hel p( ) ' par a el si st ema on- l i ne de ayuda,
o ' hel p. st ar t ( ) ' par a abr i r el si st ema de ayuda HTML con su navegador .
3
"por m se va hasta la ciudad doliente, por m se va al eterno sufrimiento, por m se va a la gente condenada. La justicia
movi a mi alto arquitecto. Hzome la divina potestad, el saber sumo y el amor primero. Antes de m no fue cosa creada sino
lo eterno y duro eternamente. Dejad, los que aqu entris, toda esperanza." Dante Alighieri Divina Comedia, Canto III; aunque
se sospecha que lo plagio de la entrada a la catedra de Estadsticas de la Facultad de Ciencias Exactas de
Nota 5
Para suscribirse a la lista de R en espaol
debe darse de alta en la direccin
https://stat.ethz.ch/mailman/listinfo/r-
help-es
13 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Escr i ba ' q( ) ' par a sal i r de R.
[ Wor kspace l oaded f r om~/ . RDat a]
Loadi ng r equi r ed package: sp
Mensaj es de avi so per di dos
package sp was bui l t under R ver si on 2. 14. 2
>
En ella nos informa que versin de R se esta ejecutando en Rstudio (en este caso la ultima de R al
redactar estas lneas es 2.15.n.n, por lo que la que corremos esta un poco desfasada); la licencia
aplicada (GNU); algunos comandos funciones- y algunos mensajes sobre paquetes. El smbolo
final > es el prompt. Se llama prompt o cmd al carcter o conjunto de caracteres que se
muestran en una lnea de comandos para indicar que est a la espera de rdenes. Es una herencia
de la poca en que los sistemas se basaban en ventanas de comandos. Los programas como
VwMaxima (calculo matemtico y simblico, tambin libre y gratuito) y R utilizan la consola para
introducir los datos directamente, a diferencia de otros programas que poseen interfaz (SAS, SPSS,
Infostat, etc) que utilizan elementos grficos para dicha funcin.
En resumen: aqu, en el prompt, escribiremos nuestras funciones.
Un detalle a tener en cuenta: cada lnea termina en ; cuando se desea finalizar la
instruccin. Si no lo hace la consola esperara a que termine en la prxima, el prompt
agregara un + indicando que son varias lneas a ejecutar. No se olvide de colocar ; al
final de cada instruccin tanto en el script como en la consola.
Para limpiar la consola pulse CTRL+L, despejara la misma.
R es un lenguaje que trabaja en base a objetos, esto en programacin significa que las
formulas, funciones, datos etc consisten en una entidad que poseen ciertas caractersticas,
por ejemplo un parmetro: sqrt(n) quiere decir que hay un objeto raz cuadrada que
recibe un parmetro (un numero) n y nos da una salida x.
Esta funcionalidad es muy potente, ya que usted no necesita saber como funciona sino
solo que parmetros requiere para obtener el resultado. Otro ejemplo, con dos
parmetros:
o > n<- c( 1: 10)
o > n
o [ 1] 1 2 3 4 5 6 7 8 9 10
Arroja un vector llamado n que concatena valores del 1 al 10. Como se puede apreciar
en esta breve formula hay varios conceptos juntos (la concatenacin, el vector, la serie de
1 a 10) todas ellas funciones. Esto nos permite suponer que las funciones se pueden
agregar, y esta en lo correcto si piensa asi.
Un ultimo ejemplo de esta afirmacin anterior:
o > al f a<- r nor m( 10)
o > al f a
o [ 1] 0. 81861407 - 2. 18540730 1. 12167243 - 2. 12783387 - 0. 17183908 0. 09290526 0. 88798608 - 0. 11830396 -
0. 46704494
o [ 10] 0. 23676978
o > sor t ( al f a)
o [ 1] - 2. 18540730 - 2. 12783387 - 0. 46704494 - 0. 17183908 - 0. 11830396 0. 09290526 0. 23676978 0. 81861407
0. 88798608
o [ 10] 1. 12167243
o
14 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
o > #- - - - - - ahor a pr obamos l as dos f unci ones j unt as mas una t er cer a, mul t i pl i car - - - - - - - - - - - - - - - - - - - - - - -
o > sor t ( bet a<- r nor m( 10) ) *10
o [ 1] - 6. 5524348 - 5. 0647560 - 2. 8489841 - 1. 9426385 - 0. 6655324 - 0. 0572295 5. 7592122 7. 7804564
9. 0297206 31. 236577
En este ejemplo creamos una variable alfa a la
cual cargamos una serie de 10 nmeros aleatorios
creados de una distribucin normal (rnorm) y
luego los ordenamos en orden creciente (sort),
sin embargo en la ultima sentencia sor t ( bet a<-
r nor m( 10) ) *10 hacemos las tres cosas juntas:
crear los nmeros aleatorios en un vector beta,
ordenarlos y multiplicarlos por 10. La simplicidad
y la potencia de calculo de R es su mayor ventaja,
la sencillez del lenguaje y uso tambin es una
gran ventaja. Finalmente para cerrar esta breve
explicacin de objetos en R tenga en cuenta que
las funciones siempre poseen un juego de
parentesis(): sort(), sqrt(); rnorm(); quit() y sus
argumentos dentro de los parntesis los
parmetros van separados por ,:
o > sor t ( al f a, decr easi ng=TRUE)
o [ 1] 1. 12167243 0. 88798608 0. 81861407 0. 23676978 0. 09290526 - 0. 11830396
- 0. 17183908 - 0. 46704494 - 2. 12783387
o [ 10] - 2. 18540730
o > sor t ( al f a, decr easi ng=FALSE)
o [ 1] - 2. 18540730 - 2. 12783387 - 0. 46704494 - 0. 17183908 - 0. 11830396 0. 09290526
0. 23676978 0. 81861407 0. 88798608
o [ 10] 1. 12167243
En el ejemplo superior, la funcin sort() posee dos parmetros, la variable a ordenar y el
sentido de la misma (creciente o decreciente) separados por la coma.
3. Los objetos como entidades
Los objetos en R pueden ser cadenas de texto, nmeros, funciones, vectores, matrices etc. Poseen
intrnsecamente dos atributos comunes: tipo y longitud.
mode(x) nos devolver el tipo de objeto, por ejemplo numeric, carcter, complejo o
lgico.
Length(x) su longitud, por ejemplo en alfa = 10 (elementos en el vector), o en el caso de
una cadena de caracteres: x<-"El tipo de la cosa" el resultado ser 1 (cadena), una
expresin lgica ser TRUE o FALSE.
Si obtiene un resultado N/A el significado no es nulo sino no disponible es decir que no
se sabe que tipo de dato es. NaN por otra parte es cuando el resultado o el valor no es
numrico. Muchas veces las funciones fallan cuando toman datos N/A o NaN, hay que
tener en cuenta esto al procesarlos porque son fuente de error en muchos casos.
Nota 6
Cmo saber usar una funcin? En la
ventana de ayuda escriba el nombre de la
funcin y le aparecer el manual, o en la
consola: > hel p( sor t ) help()
tambin es una funcin!
Nota 7
Cmo reconocer una funcin? Recuerde
que las funciones poseen parntesis ( ) en
cuyo interior los argumentos, si hay mas
de uno, van separados por comas. Se
pueden anidar (meter adentro) funciones
en las funciones, por ejemplo
sor t ( sqr t ( r nor m( 10) ) )
15 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
4. Operaciones con objetos
Los objetos son creados, usados y eventualmente eliminados. Para crear un objeto solo basta dar
la orden antecedida del nombre que tendr
> obj 1<- c( 1, 2, 3, 2, 3, 2, 2, 1, 3, 3, 3, 1, 3, 4, 4, 1, 0)
> mode( obj 1)
[ 1] "numer i c"
> l engt h( obj 1)
[ 1] 17
> obj 1
[ 1] 1 2 3 2 3 2 2 1 3 3 3 1 3 4 4 1 0
> obj ect s( )
[ 1] "a" "al f a" "b" "bet a" "c" "car t ogr af i a" "dat os_mani es"
[ 8] "n" "obj 1" "par " "x" "z"
>
En la representacin superior podemos advertir que creamos un objeto obj1 que es un vector
numrico de 17 elementos. Obtenemos su tipo y longitud y mas abajo listamos TODOS los objetos
del workspace que venimos trabajando. Se puede observar que los a, alfa, beta etc
corresponden a los anteriores ejercicios (y otros que venamos utilizando y que tambin quedaron
cargados en la memoria de R como cartografia, datos_manies etc).
Debemos recordar que estos objetos
pertenecen al workspace especfico
que venimos trabajando desde antes
y hemos salvado. Si desea eliminar
objetos hay dos maneras:
Eliminar todo: en el panel
Workspace -> clear all (elimina todos
los datos del entorno)
Objetos en particular: mediante rm(objeto), Listamos los objetos y removemos n, par y x.
Volvemos a listar para comprobar.
Los objetos creados en una sesin se guardan en el workspace al salir del
programa (si usted as lo determina) tambin se guarda el historial de comandos,
por lo que en la prxima sesin (tal como hemos visto en el listado de objetos) se
recuperan automticamente. Por ello es buena prctica guardar workspaces
distintos segn el proyecto que vaya realizando. Esos datos de sesin se almacenan
en un archivo .RDATA
Por defecto en el server de Linux (Debian) se guardara en /home/ y en Windows
(instalacin local de escritorio) en Mis Documentos; si no especifica una carpeta de
proyecto especfica.
Nota 8
En el presente manual al trabajar casi
excluyentemente sobre la consola no
hemos utilizado los ; finales. No se olvide
de colocarlos en los scripts.
16 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Algunos objetos en particular
1. Introduccin a tipos de datos
Ya hemos visto generalidades de los objetos, ahora profundizaremos en algunos de ellos que
resumen la filosofa de uso de R.
R trabaja los datos mediante un esquema o estructura de datos que es interesante conocer para
poder aplicar su potencia. En estructura de Datos, una materia de programacin, se suelen dividir
estos en dos vertientes:
Datos primitivos (numricos de distinta ndole, lgicos, caracteres y enumeraciones)
Datos estructurados (una mezcla mas o menos variable de distintos tipos)
En estos ltimos, los datos estructurados, para no extendernos, solo mencionaremos que cuando
los datos se agrupan en un tipo de estructura de un solo tipo, segn sus dimensiones se llaman
vectores o matrices; si son de dos o mas tipos se denominan listas, registros, conjuntos.
4
En los prximos prrafos examinaremos estos conceptos desde el punto de vista operacional y
como utilizarlos, las definiciones acadmicas deber profundizarlas en la medida que estime sean
de necesidad para su aplicacin particular. Tenemos las siguientes estructuras de datos:
Como datos primitivos: nmeros, caracteres, valores lgicos (de comparacin y de evaluacin)
numeric: (numricos) nmero real con doble precisin. Los podemos escribir como
enteros (3, -2), con fraccin decimal (3.27) o con notacin cientfica (3.12e-47).
complex: nmeros complejos de la forma a+bi.
character: (Caracteres) Cadenas alfanumricas de texto.
logical: variables lgicas. Puede ser TRUE o FALSE, tambin
valores lgicos de comparacin (mayor, menor igual etc) que establecen TRUE o FALSE
Hay tambin un valor que consiste en un no valor, llamado NA
En algunos casos los datos componentes de un objeto pueden no ser completamente
conocidos.
Cuando un elemento o valor es not available le asignamos el valor especial NA.
En general una operacin con elementos NA resulta NA, a no ser que mediante una
opcin de la funcin, podamos omitir o tratar los datos faltantes de forma especial, como
por ejemplo na.omit(), na.exclude(), na.action() etc.
La opcin por defecto en cualquier funcin es na.rm=FALSE (que indica que NO elimina los
NA), que da como resultado NA cuando existe al menos un dato faltante. Por el contrario
con la opcin na.rm=TRUE, la operacin se efecta con los datos vlidos.
4
Algoritmos + estructuras de datos = programas Niklaus Wirth, ed. Del Castillo, 1984
17 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Tambin hay valores especiales: INF y NAN
En la mayora de los casos, no debemos preocuparnos de si los elementos de un objeto
numrico son enteros, reales o incluso complejos. Los clculos se realizarn internamente
como nmeros de doble precisin, reales o complejos segn el caso.
Para trabajar con nmeros complejos, deberemos indicar explcitamente la parte
compleja.
En determinadas ocasiones los clculos realizados pueden llevar a respuestas con valor
infinito positivo (representado por R como Inf) o infinito negativo (-Inf). Es posible realizar
y evaluar clculos que involucren Inf.
Sin embargo, a veces, determinados clculos resuelven expresiones que no son nmeros
(representados por R como NaN's, del ingls 'not a number').
En la imagen lateral podemos apreciar la diferencia entre 0,
infinito y valores NAN. En la ultima expresin hemos utilizado la
funcin ABS(), absoluto de para eliminar el signo negativo y
obtener una salida normal (1.414214), el primer numero
irracional que tantos dolores de cabeza dio y que al menos causo
la muerte de algn griego
5
, por suerte hoy es posible extraer la raz de cualquier numero sin
mayores consecuencias que el redondeo en caso de irracionales.
Como datos estructurados, en R existen:
1. Vectores, llamados arreglos o arrays (en ingles)
2. Factores
3. Matrices
4. Series temporales
5. Hojas o Marcos de datos (dataframes en ingles)
6. Listas
En el cuadro se resumen las caractersticas
de cada tipo de estructura de datos
estructurados, por seguir la denominacin
de Cairo y Guardati. Se pueden apreciar que
la composicin de cada cual admite no solo
los datos primitivos o atmicos, sino
tambin a su vez otros datos estructurados.
5
Hipasos de Metaponto descubri en el siglo V a.c (paradjicamente mediante el teorema de Pitgoras) que ningn nmero natural, ni
ninguna relacin de otros nmeros naturales poda explicar el resultado: la raz cuadrada de 2, que es 1,4142135... seguido de infinitos
nmeros sin ninguna regla o patrn. Esto convulsiono a los Pitagricos, una sociedad de matemticos y filsofos que fundaban todo en
la armona de los nmeros y la placidez espiritual. Hipasos exultante por su brillantez e inteligencia para meter en problemas a todos
corri a mostrar su descubrimiento, que implicaba derrumbar los fundamentos de la Sociedad Pitagrica y demostraba que lo de
inteligente no lo hacia en las relaciones sociales. Porque en lugar de recibir la gloria y los halagos de todos sus pitagricos colegas; por
alguna extraa razn estos se ofendieron y echaron espuma por la boca, al grito de Nos arruinaste el estofado. Fue desterrado de la
Sociedad, y el acto de destierro inclua una ceremonia de funeral, con entierro de cajn (sin el tipo adentro) y colocacin de una lpida
que simbolizaba la muerte del hereje para la Sociedad. Otros aseguran que su muerte no fue tan metafrica sino a garrotazo limpio y
factiblemente orinando sobre su lapida, postmorten. Quin dijo que las ciencias duras son solo para gente sin sangre en las venas?
18 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
2. Vectores
Una definicin formal, creacin y manipulacin:
Los arreglos (llamados arrays en lenguajes de programacin) consisten en una coleccin finita,
homognea y ordenada de datos. Esto es un solo tipo de datos en todos sus componentes para
todos los ndices
6
.
Una coleccin finita y homognea significa que posee un principio y un fin, con datos todos del
mismo tipo y ordenada debido a que los vectores se consideran como celdas cuyo contenido estn
referenciados por un ndice que inicia en 1 y termina por ejemplo- en 10. As la celda 1
contiene el valor n, la 2 otro hasta el final del array.
En esta representacin vemos una celda que posee un ndice llamado
17 con un valor 1993, El ndice tambin puede ser nominal, por ejemplo
bananas y el valor numrico, caracteres o lgicos.
Un ejemplo de cdigo y algunas aclaraciones:
> a<- c( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) ; # cr eamos un vect or de 10 el ement os del 1 al 10
> l engt h( a) ; # obt enemos su l ongi t ud
[ 1] 10
> a[ 11] <- 11 # agr egamos un val or 11 en l a posi ci n 11
> l engt h( a) ; # obt enemos su l ongi t ud nuevament e
[ 1] 11
> a # l i st amos t odos l os el ement os del vect or
[ 1] 1 2 3 4 5 6 7 8 9 10 11
> a[ 12] <- c( "A") ; # agr egamos a l a posi ci n 12 un car ct er A
> a # l i st amos nuevament e
# se obser va que el vect or no posee val or es numr i cos si no de car act er es
[ 1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "A"
> mode( a) ; # compr obamos el t i po de dat os
[ 1] "char act er "
# car gamos un val or en a[ 11]
> a[ 11] <- 11;
# f or zamos a dat os numr i cos:
> as. numer i c( a) ;
[ 1] 1 2 3 4 5 6 7 8 9 10 11 12
# como no nos i dent i f i ca nada l os ndi ces, cambi amos a uno con nombr es:
> names( a) <- c( "per as", "manzanas", "t or ni l l os", "cl avos", "bayas", "bel l os", "vel l os") ;
> a; # l i st amos el vect or
per as manzanas t or ni l l os cl avos bayas bel l os vel l os <NA>
1 2 3 4 5 6 7 8
<NA> <NA> <NA> <NA>
9 10 11 12
# obser vamos que hay ndi ces que no poseen denomi naci n, son NA, debemos cr ear
# un vect or de nombr es i gual al vect or de ndi ces: 12 posi ci ones.
> names( a) <- c ( "per as", "manzanas", "t or ni l l os", "cl avos", "bayas", "bel l os",
"vel l os", "bol l os", "bal as", "ber r os", "ox mor on", "cosas")
> a
per as manzanas t or ni l l os cl avos bayas bel l os vel l os
1 2 3 4 5 6 7
bol l os bal as ber r os
8 9 10
6
Estructura de Datos de Osvaldo Cairo y Silvia Guardati.
ndice=17 Valor=1993
19 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
oxi mor ones cosas
11 12
# car gamos un nuevo val or en a[ 1] o como se denomi na ahor a a[ per as]
> a[ per as] <- 33
Er r or en a[ per as] <- 33 : obj et o ' per as' no encont r ado
# el er r or es por que el ndi ce debe est ar con comi l l as al ser un nombr e
> a[ "per as"] <- 33
> a
per as manzanas t or ni l l os cl avos bayas bel l os vel l os
33 2 3 4 5 6 7
bol l os bal as ber r os ox mor on cosas
8 9 10 11 12
En la primera lnea creamos un array llamado a que concatena 10 nmeros enteros, valores del
1 al 10, de manera tal que el valor numrico de la celda 1 es 1, el de la 2 es 2 y as sucesivamente
coincidiendo con el ndice, aunque no siempre es as. Comprobamos la longitud del vector con
lenght(a) que devuelve 10 elementos.
El cambio de ndice a nombre es agregando un vector de nombres (funcin names() ), de uso
extendido y comn en muchas otras funciones.
En la definicin de arrays dijimos que eran una coleccin finita, sin embargo en R esta coleccin
no esta cerrada ya que es posible agregar ms celdas con valores solo referenciando a que celda
pertenecen. As cargamos el valor numrico entero 11 en la posicin 11, comprobamos que hay 11
elementos ahora.
Hemos comprobado que si mezclamos tipos, cambia el tipo de datos del vector. Al
cargar en la posicin 12 un carcter A y al comprobar que tipo de array es vemos
que ya no es numrico sino de caracteres. Esto es concordante con la definicin del
vector, que no permite mezclar tipos distintos. Por ende al introducir un carcter
el vector cambia de numrico a caracteres. Los valores ya no referencian nmeros
sino caracteres.
Esta operacin se llama cast (moldeado) o conversin de tipos y es fuente de errores, ya que no
es posible hacer operaciones aritmticas o matemticas con caracteres.
> a*5
Er r or en a * 5 : ar gument o no- numr i co par a oper ador bi nar i o
Una simple multiplicacin lo demostrara. Para salvarnos el momento existe una funcin llamada
as.numeric()
7
, no exenta de cierta consecuencia:
> a
[ 1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "A"
> a<- as. numer i c( a)
Mensaj es de avi so per di dos
NAs i nt r oduci dos por coer ci n
8
> a
[ 1] 1 2 3 4 5 6 7 8 9 10 11 NA
> a*5
[ 1] 5 10 15 20 25 30 35 40 45 50 55 NA
7
Tambin existen otras: as.nnnn que pueden consultar en la ayuda de RStudio
8
Valores por coercin: a la fuerza nomas
20 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Se observa que la celda 12 cuyo contenido era el
carcter A al ser convertido a numero es un valor
desconocido, un NA (not available). Cualquier operacin
que se haga sobre esta celda arrojara en consecuencia un
NA; pero en ciertos casos arrojara errores porque
suelen haber funciones que no trabajan sobre la carencia de un dato. Este atento
Cmo se soluciona esto? Lo mas simple es cargar un valor 0 en dicha celda o utilizar funciones
na.omit() como en este ejemplo:
> a
[ 1] 1 2 3 4 5 6 7 8 9 10 11 NA
> na. omi t ( a) * 5
[ 1] 5 10 15 20 25 30 35 40 45 50 55
at t r ( , "na. act i on")
[ 1] 12
at t r ( , "cl ass")
[ 1] "omi t "
Al utilizar na.omit(a) en la multiplicacin se omiti el valor NA y el vector resultante contiene solo
valores enteros correctos. La ayuda del Rstudio
9
es muy explicita:
Na.omit:
Trata sobre valores perdidos en objetos
Descripcin
Estas funciones genricas son tiles para trabajar con AN en, por ejemplo, marcos de datos. na.fail devuelve el
objeto si no contiene valores perdidos, y seala un error contrario. na.omit devuelve el objeto con casos
incompletos eliminados. na.pass devuelve el objeto sin cambios.
Se recomienda leer siempre las ayudas ya que
resuelven muchas de las dudas o usos inadecuados
de las funciones.
Operaciones con vectores
Como se habr advertido es posible efectuar
operaciones matemticas con vectores, hay
esencialmente dos grandes divisiones:
Operaciones de un vector con una funcin o
nmero
Operaciones entre vectores
A esto se le llama aritmtica vectorial e intervienen
nociones de algebra lineal y mas adelante matricial, pero en este caso R simplifica las cosas
mediante el uso de funciones y de su propia flexibilidad. No ahondaremos en los conceptos
intrnsecos de vectores pero veremos algunas de sus operaciones ms usuales.
9
En ingles
Nota 9
Observe atentamente que no haya valores
NA si va a realizar clculos, muchas
funciones no trabajan con ellos
21 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Operaciones de un vector con una funcin u operador
Cuando trabajamos con un vector con una operacin o funcin, esta se aplica a cada
elemento por separado. El conjunto de datos es afectado por este calculo, una serie de
ejemplos:
>a<- c( 1, 3, 6, 8, 9, 9, 2, 3, 3, 3, 3, 3, 2, 1, 0) # creamos el vector a
> a/ 3 # dividimos por 3 a cada termino del vector a
[ 1] 0. 3333333 1. 0000000 2. 0000000 2. 6666667 3. 0000000 3. 0000000 0. 6666667 1. 0000000
1. 0000000 1. 0000000 1. 0000000
[ 12] 1. 0000000 0. 6666667 0. 3333333 0. 0000000
> a- 1 # restamos a cada termino de a - 1
[ 1] 0 2 5 7 8 8 1 2 2 2 2 2 1 0 - 1
> a+1 # sumamos +1 a cada termino del vector a
[ 1] 2 4 7 9 10 10 3 4 4 4 4 4 3 2 1
> l og( a) # hallamos el logaritmo de cada termino de a
[ 1] 0. 0000000 1. 0986123 1. 7917595 2. 0794415 2. 1972246 2. 1972246 0. 6931472 1. 0986123
1. 0986123 1. 0986123 1. 0986123
[ 12] 1. 0986123 0. 6931472 0. 0000000 - I nf
> l og( 1/ a) # hallamos el logaritmo de cada termino inverso de a
[ 1] 0. 0000000 - 1. 0986123 - 1. 7917595 - 2. 0794415 - 2. 1972246 - 2. 1972246 - 0. 6931472 - 1. 0986123
- 1. 0986123 - 1. 0986123
[ 11] - 1. 0986123 - 1. 0986123 - 0. 6931472 0. 0000000 I nf
> abs( a) # hallamos el valor absoluto (sin decimales ni signo) de cada termino de a
[ 1] 1 3 6 8 9 9 2 3 3 3 3 3 2 1 0
> a^a # hallamos el exponencial de cada termino de a elevado a si mismo.
[ 1] 1 27 46656 16777216 387420489 387420489 4 27
27 27 27
[ 12] 27 4 1 1
>
(los nmeros al inicio de la lnea entre corchetes [] indican el numero del ndice del vector al inicio
del rengln) En el cuadro al inicio de este apartado hay una serie de funciones comunes para los
vectores. Algunas funciones estadsticas las podemos realizar de la manera clsica (desarrollando
la formula) o utilizando funciones ad hoc, los ejemplos:
> a # el vectora.
[ 1] 1 3 6 8 9 9 2 3 3 3 3 3 2 1 0
> mi n( a) # hallamos el minimo de a.
[ 1] 0
> max( a) # hallamos el maximo de a.
[ 1] 9
> sum( a) # hallamos la sumatoria de los terminos de a.
[ 1] 56
> l engt h( a) # hallamos la cantidad de componentes de a.
[ 1] 15
> sum( a) / l engt h( a) # hallamos la media aritmetica de a.
[ 1] 3. 733333
> mean( a) # usamos la funcin media en a.
[ 1] 3. 733333
> a # el vectora.
[ 1] 1 3 6 8 9 9 2 3 3 3 3 3 2 1 0
> a[ 15/ 2+0. 5] # buscamos la mediana de a mediante formula.
[ 1] 3
> medi an( a) # usamos la funcin mediana en a.
[ 1] 3
>
22 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Operaciones entre vectores
Son similares a las anteriores, en el caso que cada vector sea igual en cantidad de trminos
(longitud) que el anterior, el clculo se efecta completo. En caso que uno de ellos sea menor, se
repiten los valores en el clculo hasta completar el faltante.
> al f a<- c( 1, 2, 3)
> bet a<- c( 1, 2, 3, 4, 5, 6, 7, 8, 9)
> al f a * bet a
[ 1] 1 4 9 4 10 18 7 16 27
La lgica de la multiplicacin es la siguiente:
El primer array multiplica al segundo desde la posicin 1 a la 3 los valores
del segundo desde la posicin 1 a la 3; luego repite del 1 al 3 con los
valores de beta de la posicin 4 a la 6, y la tercera repeticin hasta
finalizar. Es de destacar que ambos vectores son de longitudes tal que el
vector beta es mltiplo del alfa; si no fuera as R nos dara un error del
tipo
> bet a[ 10] <- 10 # agr egamos un val or en l a posi ci n [ 10]
> al f a * bet a
[ 1] 1 4 9 4 10 18 7 16 27 10
Mensaj es de avi so per di dos
I n al f a * bet a :
l ongi t ud de obj et o mayor no es ml t i pl o de l a l ongi t ud de uno menor
Pese al mensaje de error, R igual realiza el clculo y exhibe el resultado: 1 * 10 = 10
Un ejemplo de trabajo entre vectores con funciones de correlacin, varianza y covarianza:
# cr eamos val or es al eat or i os de una di st r i buci n nor mal
> vect or 1<- c( r ound( r nor m( 10) , 2) )
> vect or 1
[ 1] - 1. 29 - 0. 47 - 0. 57 - 0. 19 - 0. 50 0. 88 0. 56 0. 03 1. 20 0. 88
# l os val or es de vect or 1 y vect or 2 se han r edondeado con r ound a 2 deci mal es
> vect or 2<- c( r ound( r nor m( 10) , 2) )
> vect or 2
[ 1] 0. 40 0. 30 - 0. 58 - 0. 08 0. 04 1. 01 - 1. 06 0. 96 - 0. 15 - 1. 93
# cor r el aci on ent r e vect or es
> cor ( vect or 1, vect or 2)
[ 1] - 0. 2818315
# var i anza ent r e vect or es
> var ( vect or 1, vect or 2)
[ 1] - 0. 2030922
# covar i anza ent r e vect or es
> cov( vect or 1, vect or 2)
[ 1] - 0. 2030922
El tema de operaciones entre vectores cobra mayor fuerza en el apartado sobre matrices, donde
las condiciones segn el tipo de operacin que se realice depende si estas son de formas
correctas, es decir si son matrices cuadradas, rectangulares, de igual cantidad de dimensiones. En
el prximo capitulo abordaremos esta cuestin que se inicia aqu, ya que los vectores son
esencialmente matrices de una sola dimensin.
alfa beta resultado
1 1 1
2 2 4
3 3 9
1 4 4
2 5 10
3 6 18
1 7 7
2 8 16
3 9 27
23 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Poner nombre a los ndices, una razn:
El acceso a un vector es mediante un ndice, a[ 1] =1, a[ 2] =3, a[ 5] =9 etc. Tambin podemos
cambiar el ndice a nombres mediante la adicin del vector de ndices con nombres al array, tal
como vimos anteriormente, a estos vectores se les dice que estn indexados ordinalmente
10
:
Esto es muy til porque
muchas veces debemos tener
referencias concretas, por
ejemplo en un grafico (imagen
inferior) o en una salida de
pantalla (imagen superior)
para identificar mejor que es lo
que estamos procesando:
Por supuesto que los nombres de ndice del vector son solo un ejemplo y adems en la graficacin
hay otros mtodos para poner labels (etiquetas) en los ejes. En realidad representan una
comodidad para el investigador para que no se pierda en el anlisis de los datos.
Vectores de caracteres
Los vectores tambin pueden ser de
caracteres, estos se diferencian de los
anteriores porque el nmero de
operaciones es ms reducido y adems no
aplican las operaciones matemticas.
Los trminos de un vector de caracteres se
escriben entre comillas, sean caracteres,
palabras o frases.
En el ejemplo lateral creamos un vector b asignndole una palabra, luego asignamos a la
segunda posicin de b otra palabra y finalmente a la tercera posicin de b una frase completa.
Si deseamos unir dos vectores de caracteres en uno solo debemos utilizar la funcin paste() pero
si desean mantener esos dos vectores separados y solo unirlos para una salida que no desea
10
Ordinal porque no sigue un ndice de cardinalidad sino algn tipo de organizacin de orden, en nuestro ejemplo tipos de cosas.
24 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
guardar en el workspace, solo bastara con concatenarlos: e<-c(b,c,d) donde e es el vector final
de la copia y pegado de b,c,d con la funcin c()
Vectores lgicos: breve introduccin a la lgica simblica
Otro tipo de vectores son los que estn constituidos por valores lgicos, TRUE o FALSE (1, 0) que
son propios de la lgica simblica y en cuya tabla de verdad resumimos el concepto
fundamental que exponemos a continuacin como introduccin:
conectivo smbolo enunciacin Ejemplos y observaciones / estados lgicos (*)
negacin p (no p) no / NOT
conjuncin
pq
y, eventualmente pero, adems, aunque / AND
Disyuncin
inclusiva
pq
y/o de carcter inclusivo, este y aquel. / OR
Disyuncin
exclusiva
pq
o de carcter excluyente, este o este / XOR
Implicacin o
condicional
pq entonces, es reemplazable por una coma ,o
tambin por es suficiente, es una condicin
suficiente, solo si, es necesario, La primera
enunciacin es la hiptesis de la implicacin y la
segunda su conclusin.
Doble
implicacin o
bicondicional
pq si y solo si, es necesario y suficiente para , se
puede abreviar sii (si y solo si)
Tabla de verdad, en donde
las proposiciones atmicas
p y q son sometidas a
distintos operadores (o
conectores) lgicos y sus
resultados. 0 equivale a
falso y 1 a verdad.
11
La aplicacin de esto en un ejemplo con dos vectores lgicos en los que
sometemos a estos trminos a distintas operaciones. La utilidad es que
permiten realizar condiciones especficas cuando trabajamos con estados
lgicos (si tal condicin es falsa, entonces hago o no hago tal cosa).
Esto es en el mbito de vectores lgicos compuestos de valores T o F
Para ello tambin hay operadores lgicos pero que aplican a vectores
numricos por comparacion (igual, distinto, mayor que, menor que, etc).
11
Matemticas Discretas y Combinatoria Ralph P. Grimaldi ed. 2000 s/d. pag. 53, Introduccin a la Lgica Irving Copi Eudeba
1969
p q p
pq pq pq
pq pq
0 0 1 0 0 0 1 1
0 1 1 0 1 1 1 0
1 0 0 0 1 1 0 0
1 1 0 1 1 0 1 1
25 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Algunos ejemplos con operadores lgicos:
> a
[ 1] TRUE
> b
[ 1] FALSE
> c
[ 1] TRUE
> d
[ 1] FALSE
> e<- ( a | | b && c)
> e
[ 1] TRUE
> e<- ( ( a | | b) && c)
> e
[ 1] TRUE
> e<- b | | d
> e
[ 1] FALSE
> vect or Log<- c( a, b, c, d, e)
> vect or Log
[ 1] TRUE FALSE TRUE FALSE FALSE
Algunos ejemplos con operadores de comparacin
> a<- 10
> b<- 5
> c<- c( 1, 12, 2, 3, 7, 4, 65)
> c<=a
[ 1] TRUE FALSE TRUE TRUE TRUE TRUE FALSE
> a>=c
[ 1] TRUE FALSE TRUE TRUE TRUE TRUE FALSE
> a==c
[ 1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> a<c
[ 1] FALSE TRUE FALSE FALSE FALSE FALSE TRUE
La aplicacin de vectores (o valores) lgicos a estos ltimos operadores es automtica. Hay aun
una serie de caractersticas que son de inters sobre el uso de vectores, para ello remitimos al
texto Introduccion a R del R Development Core Team; descargable gratuitamente del sitio de R
en el link http://cran.r-project.org/ en la seccin contributed documentation entre otra
documentacin en espaol e ingles.
3. Factores: un ordenamiento categrico
Un factor es un vector utilizado para una clasificacin discreta (donde el valor se cuenta no se
mide) en el cual a su vez puede ser nominal u ordinal. En la salida de pantalla creamos un ejemplo
de un Factor por categoras y posteriormente en ordinal:
# cr eamos una l i st a de l ocal i dades de un f i ct i ci o gr upo pol i t i co cor r ent i no en el or den en
# que van l l egando a l a r euni n, cada acr ni mo es una l ocal i dad.
>di st r i t os <- c( "ct es" , "ct es" , "ct es" , "sal a" , "r i ach" , "empe" , "sanl " , "sanl " ,
"ct es" , "sanl " , "r i ach")
# I ngr esamos cuant os r epr esent ant es acuden con sus cr edenci al es *a r azn de uno por or den)
> congr esal es<- c( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
# cr eamos el vect or FACTOR que cont i ene el or den cat egr i co l ocal i dades
> Congr esoPar t i dar i o <- f act or ( di st r i t os)
# echamos un vi st azo a como quedo conf or mado el FACTOR
26 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
> Congr esoPar t i dar i o
[ 1] ct es ct es ct es sal a r i ach empe sanl sanl
ct es sanl r i ach
Level s: ct es empe r i ach sal a sanl
# Ahor a apl i camos l a cant i dad de i ngr esant es con
l as l ocal i dades, el vect or de congr esal es # debe
ser de i gual l ongi t ude que el de di st r i t os! ! !
> r epr esent ant es<- t appl y( congr esal es, di st r i t os,
sum)
> r epr esent ant es
ct es empe r i ach sal a sanl
4 1 2 1 3
# or denami ent o en FACTOR ORDI NAL
> or der ed( r epr esent ant es)
ct es empe r i ach sal a sanl
4 1 2 1 3
Level s: 1 < 2 < 3 < 4
Tambin podemos apreciar la grafica, que la podemos
ordenar con un par de funciones en el siguiente
ejemplo: barplot(sort(representantes))
Como se aprecia en la segunda grafica, la hegemona
De la capital Correntina es de cierto peso pero no determinante. Para ganar una mocin no solo
deben votar en bloque todos los representantes capitalinos sino que deben captar al menos dos
votos de la segunda mayora o de las minoras para obtener una decisin. Como la cifra es impar,
difcilmente el presidente de este ficticio congreso pueda hacer valer su voto doble. Sutilezas del
estatuto.
4. Matrices: definicin y operaciones
Las matrices son definidas como arreglos bidimensionales (o n dimensiones ms) aunque las
mas usuales son las de 2 y 3 dimensiones. En el entorno R se les suele definir como variables
indexadas . A continuacin un divertido repaso de algebra lineal para entrar en materia
12
En palabras mas simples, Una matriz es un conjunto rectangular de datos ordenados dispuestos en
una serie de filas y columnas, su orden. Decir que la matriz B33 significa que dicha matriz posee 3
filas de 3 columnas.
B=
11 12 13
21 22 23
31 32 33
2 3 4
1 2 1
4 5 3
a a a
a a a
a a a
| | | |
| |
=
| |
| |
\ . \ .
Operaciones elementales sobre matrices
Sumas y restas
Se pueden sumar y restar las matrices si estas SON IGUALES. El concepto del orden de la matriz
cuadrada o rectangular es la igualdad entre las filas y columnas. Si ambas matrices no son iguales
12
Cortesa del autor, no agradezcan.
Esta matriz de orden 3x3 est representada por las
letras que indican Fila,Columna y una representacin
numrica de una matriz cargada con datos.
27 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
en su orden no es posible la operacin. Las sumas y las restas son algebraicas y se hacen de
trmino a trmino:
1 10 1 2 2 8
2 1 8 4 6 5
3 1 2 7 1 6
6 5 3 1 9 6
| | | | | |
+ =
| | |
\ . \ . \ .
| | | | | |
=
| | |
\ . \ . \ .
Multiplicacin de matrices
La regla de oro es C=F
13
. Esto quiere decir que las Columnas de la matriz A deben ser iguales a las
de las Filas de la matriz B. Si no se da esta condicin no se pueden multiplicar las matrices.
Por un escalar
7 4 21 12
3. 2 4 6 12
3 2 9 6
b
+ +
( (
( (
+ = +
( (
( ( + +
Un par de ejemplos en R:
> m1<- mat r i x( 1: 25, nr ow=5, ncol =5) # cr eamos una mat r i z de 5 x 5, secuenci a de 25
# el ement os secuenci al es
> m1 # exhi bi mos por pant al l a el r esul t ado
[ , 1] [ , 2] [ , 3] [ , 4] [ , 5]
[ 1, ] 1 6 11 16 21
[ 2, ] 2 7 12 17 22
[ 3, ] 3 8 13 18 23
[ 4, ] 4 9 14 19 24
[ 5, ] 5 10 15 20 25
> - 3*m1 # mul t i pl i camos el escal ar - 3 x | m1|
[ , 1] [ , 2] [ , 3] [ , 4] [ , 5] # r esul t ado
[ 1, ] - 3 - 18 - 33 - 48 - 63
[ 2, ] - 6 - 21 - 36 - 51 - 66
[ 3, ] - 9 - 24 - 39 - 54 - 69
[ 4, ] - 12 - 27 - 42 - 57 - 72
[ 5, ] - 15 - 30 - 45 - 60 - 75
> m2<- mat r i x( r ound( r nor m( 25) , 2) , 5, 5) # cr eamos una mat r i z de numer os al eat or i os
> m2
[ , 1] [ , 2] [ , 3] [ , 4] [ , 5]
[ 1, ] - 0. 29 1. 35 - 1. 25 - 0. 05 - 0. 81
[ 2, ] - 0. 02 - 1. 73 0. 75 2. 07 - 0. 96
[ 3, ] - 1. 78 - 3. 08 - 0. 29 - 0. 64 1. 95
[ 4, ] - 0. 86 - 0. 35 - 1. 39 0. 79 - 0. 48
[ 5, ] - 0. 85 - 0. 43 0. 95 - 0. 06 - 0. 27
13
C=F: columnas igual a filas (N del A)
Hay que tener en cuenta que en el caso
de la resta el signo delante de la matriz
cambia los signos internos. En la segunda
matriz de la resta en lugar de -2 7 3 -1
quedan 2 -7 -3 1.
La multiplicacin de la matriz por el escalar es
termino a termino poniendo atencin al signo del
multiplicador y del multiplicando para el resultado
final. La matriz B se ha multiplicado por -3
28 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
> m1*abs( m2) # mul t i pl i camos | m1| * el absol ut o de val or es de | m2|
[ , 1] [ , 2] [ , 3] [ , 4] [ , 5] # r esul t ado> val or es posi t i vos
[ 1, ] 0. 29 8. 10 13. 75 0. 80 17. 01
[ 2, ] 0. 04 12. 11 9. 00 35. 19 21. 12
[ 3, ] 5. 34 24. 64 3. 77 11. 52 44. 85
[ 4, ] 3. 44 3. 15 19. 46 15. 01 11. 52
[ 5, ] 4. 25 4. 30 14. 25 1. 20 6. 75
> m1*m2 # mul t i pl i camos | m1| x | m2|
[ , 1] [ , 2] [ , 3] [ , 4] [ , 5] # r esul t ados con si gnos
[ 1, ] - 0. 29 8. 10 - 13. 75 - 0. 80 - 17. 01
[ 2, ] - 0. 04 - 12. 11 9. 00 35. 19 - 21. 12
[ 3, ] - 5. 34 - 24. 64 - 3. 77 - 11. 52 44. 85
[ 4, ] - 3. 44 - 3. 15 - 19. 46 15. 01 - 11. 52
[ 5, ] - 4. 25 - 4. 30 14. 25 - 1. 20 - 6. 75
Ambas matrices |m1| y |m2| son iguales en filas y columnas, pero tenemos el caso mas usual,
matrices diferentes en CyF:
1 1
1 2 3
. 2 2
1 2 3
3 3
ab x
+
(
+ + +
(
(
= +
(
(
( +
Para simplificar realizamos esta operacin grafica:
A * B
1 2 3
1 2 3
+ + +
(
(
1 1
2 2
3 3
+
(
(
+
(
( +
11 12 13
21 22 23
31 32 33
c c c
c c c
c c c
| |
|
|
|
\ .
Las flechas rojas explican grficamente la mecnica de la multiplicacin, la cual se repite para cada
fila y columna hasta completar la matriz C3x3 que resulta de Fa x Cb es decir que de A
32
x B
23
= C
33
La multiplicacin (producto) de un vector columna por una matriz o la de un vector fila respetan el
mismo criterio que se menciono en lneas superiores Ca=Fb siendo el resultado Fa x Cb
Debemos atender a la regla Ca=Fb (Columna a igual a
Fila b= en este caso a= 3 filas y b= 3 columnas. Si se
diera el caso que las filas de b fueran mas, o las
columnas de a fuesen mas no importa porque la
condicin es Ca=Fb
C11= (a11*b11) + (a12*b11)
C12= (a11*b12) + (a12*b22)
C13= (a11*b13) + (a12*b23)
C21= (a21*b11) + (a22*b21)
C22= (a21*b12) + (a22*b22)
C23= (a21*b13) + (a22*b23)
29 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
En este caso R no efecta operacin alguna ya que solo trabaja con
matrices cuadradas o rectangulares de iguales dimensiones.
Peculiaridades de la multiplicacin de vectores por matrices
Un vector fila por una matriz:
( )
1 2 3
. 1,2,3 4 5 6
7 8 9
ab x
| |
|
=
|
|
\ .
a.b
1 2 3
4 5 6
7 8 9
| |
|
|
|
\ .
( )
1,2,3
30 36 42
Si usted ha seguido atentamente esta explicacin y esta pensando seriamente en dedicarse a las
ciencias sociales (lo mas opuesto posible a esto); despreocpese, en R todo es mas simple. El
algebra de matrices es tan simple como trabajar el concepto de vectores.
En R el resultado es esencialmente simple. Si el vector es igual en sus componentes a la fila o
columna de la matriz dara el resultado sin problemas, sino el vector rellenara los componentes
faltantes repitiendo la secuencia tal como vemos en el ejemplo siguiente:
> n1<- mat r i x( 1: 10, 5, 2) # cr eamos una mat r i z
> n1
[ , 1] [ , 2] # exhi bi mos l a mat r i z en l a pant al l a
[ 1, ] 1 6
[ 2, ] 2 7
[ 3, ] 3 8
[ 4, ] 4 9
[ 5, ] 5 10
> vect or 1<- c( 1, 2, 3) # creamos un vector de 3 elementos filas o col umnas de | n1|
> vect or 1*n1
[ , 1] [ , 2]
[ 1, ] 1 18
[ 2, ] 4 7
[ 3, ] 9 16
[ 4, ] 4 27
[ 5, ] 10 10
Mensaj es de avi so per di dos # r eal i zar a l a oper aci n per o dar un mensaj e de er r or
I n vect or 1 * n1 :
l ongi t ud de obj et o mayor no es ml t i pl o de l a l ongi t ud de uno menor
a
11
: 1+8+21=30
a
12
: 2+10+24=36
a
13
: 3+12+27=42
30 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
> vect or 1[ 4] <- 4 # compl et amos el vect or con un val or 4t o
> vect or 1[ 5] <- 5 # compl et amos el vect or con un val or 5t o
> vect or 1*n1 # ahor a el vect or == col umna de | n1|
[ , 1] [ , 2]
[ 1, ] 1 6
[ 2, ] 4 14
[ 3, ] 9 24
[ 4, ] 16 36
[ 5, ] 25 50 # no hay er r or
> vect or 2<- c( 7, 9) # cr eamos un vect or 2 con 2 el ement os == f i l as | n1|
> vect or 2*n1
[ , 1] [ , 2]
[ 1, ] 7 54
[ 2, ] 18 49
[ 3, ] 21 72
[ 4, ] 36 63
[ 5, ] 35 90 # no hay mensaj es de er r or , Si C o F | n1| == el ement os Vect or
Operaciones de filas o columnas con matrices en R
Como se ha definido anteriormente, una matriz es un arreglo rectangular de nmeros, o sea una
variable vectorial con al menos dos ndices. Como el nmero de dimensiones puede ser infinito (e
irrepresentable en nuestra mente) lo usual es dos y tres dimensiones.
La forma ms simple de crear una matriz en R, es mediante la funcin matrix():
mat r i x( dat a = NA, nr ow = 1, ncol = 1, byr ow = FALSE, di mnames = NULL)
la cual posee cinco argumentos. El primero, data, es opcional y debe ser un vector que
corresponder a los elementos de la matriz: x=vector, el segundo y tercero de los argumentos son
para declarar el nmero de filas y columnas de la matriz:
nrow=nmero de-filas y
ncol=nmero de columnas, el cuarto argumento sirve para definir cmo se
completar los elementos de la matriz, o por columnas, o si no se define
nada, se completa la matriz por filas:
byrow=True-False y por ltimo,
dimnames=nombre columnas y filas.
Pero no es la nica manera de crear matrices, tambin se pueden construir a travs de la unin de
vectores con iguales nmeros de componentes, sean filas o columnas :
Mediante adiccin de vectores en columnas: cbind(a,b,c,d)
Mediante adiccin de vectores en filas: rbind(a,b,c,d)
> a<- c( 1, 1, 1, 1, 1, 1) # cr eamos un vect or
> b<- c( 2, 2, 2, 2, 2, 2) # cr eamos un vect or
> c<- c( 3, 3, 3, 3, 3, 3) # cr eamos un vect or
> d<- c( 4, 4, 4, 4, 4, 4) # cr eamos un vect or
> x<- r bi nd( a, b, c, d) # cr eamos una mat r i z por col umnas con l os vect or es ant er i or es
31 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
> x # l i st amos l a mat r i z | x|
[ , 1] [ , 2] [ , 3] [ , 4] [ , 5] [ , 6]
a 1 1 1 1 1 1
b 2 2 2 2 2 2
c 3 3 3 3 3 3
d 4 4 4 4 4 4
> w<- r bi nd( a, b, c, d) # cr eamos una mat r i z por f i l as con l os vect or es ant er i or es
> w # l i st amos l a mat r i z | w|
[ , 1] [ , 2] [ , 3] [ , 4] [ , 5] [ , 6]
a 1 1 1 1 1 1
b 2 2 2 2 2 2
c 3 3 3 3 3 3
d 4 4 4 4 4 4
>
La creacin de una matriz mediante la funcin de concatenacin empleando los parmetros de los
vectores a,b,c,d (que dan la matriz |w|):
> w<- mat r i x( c( a, b, c, d) , ncol =6, nr ow=6, byr ow=TRUE, di mnames=l i st ( c( "f i l a
1", "f i l a 2", "f i l a 3", "f i l a 4", "f i l a 5", "f i l a 6") , c( "col 1", "col 2", "col
3", "col 4", "col 5", "col 6") ) )
> w
col 1 col 2 col 3 col 4 col 5 col 6
f i l a 1 1 1 1 1 1 1
f i l a 2 2 2 2 2 2 2
f i l a 3 3 3 3 3 3 3
f i l a 4 4 4 4 4 4 4
f i l a 5 1 1 1 1 1 1
f i l a 6 2 2 2 2 2 2
Obsrvese que los vectores poseen 6 elementos, por lo que la matriz cuadrada es la repeticin de
dos filas (5 y 6), para crear la matriz similar al ejercicio anterior solo hay que cambiar nrow=4 y
eliminar las etiquetas de filas 5 y 6. Si faltan elementos segn la declaracin, se completan
repitiendo los existentes en el orden secuencial de la expresin a,b,c,d
Tambin hemos usado una funcin llamada list() lista- que explicaremos en breve. Como siempre
la funcin c() es la que concatena miembros en la lista y vectores. Otro detalle: si el argumento
byrow=FALSE (para crear la matriz |x|) el resultado seria:
> x<- mat r i x( c( a, b, c, d) , ncol =6, nr ow=6, byr ow=FALSE, di mnames=l i st ( c( "f i l a
1", "f i l a 2", "f i l a 3", "f i l a 4", "f i l a 5", "f i l a 6") , c( "col 1", "col 2", "col
3", "col 4", "col 5", "col 6") ) )
> x
col 1 col 2 col 3 col 4 col 5 col 6
f i l a 1 1 2 3 4 1 2
f i l a 2 1 2 3 4 1 2
f i l a 3 1 2 3 4 1 2
f i l a 4 1 2 3 4 1 2
f i l a 5 1 2 3 4 1 2
f i l a 6 1 2 3 4 1 2
El parmetro Byrow establece como se ordena por filas o columnas o por filas segn sea FALSE o
TRUE. Byrow es por filas
32 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Por consiguiente la traspuesta de |x| seria la |w| o al revs, segn tomemos a una u otra como
original. Con el parmetro byrow estamos creando una transpuesta a la matriz, pero existe una
funcin especfica para esto, y mas practica. Con una funcin t(x) hallamos la transpuesta:
> t ( x)
f i l a 1 f i l a 2 f i l a 3 f i l a 4 f i l a 5 f i l a 6
col 1 1 1 1 1 1 1
col 2 2 2 2 2 2 2
col 3 3 3 3 3 3 3
col 4 4 4 4 4 4 4
col 5 1 1 1 1 1 1
col 6 2 2 2 2 2 2
El acceso a los datos de una matriz es siguiendo la notacin |matriz| [fila, columna]:
> w
col 1 col 2 col 3 col 4 col 5 col 6
f i l a 1 1 1 1 1 1 1
f i l a 2 2 2 2 2 2 2
f i l a 3 3 3 3 3 3 3
f i l a 4 4 4 4 4 4 4
f i l a 5 1 1 1 1 1 1
f i l a 6 2 2 2 2 2 2
> w[ 1, 5]
[ 1] 1
> w[ 2, 3]
[ 1] 2
Para acceder a todos los elementos de una fila:
> w[ 3, ] # se omi t e el val or de col umna
col 1 col 2 col 3 col 4 col 5 col 6
3 3 3 3 3 3
Y para leer todos los resultados de una columna:
> w[ , 3] # se omi t e el val or de f i l a
f i l a 1 f i l a 2 f i l a 3 f i l a 4 f i l a 5 f i l a 6
1 2 3 4 1 2
Un ejemplo real de trabajo con una matriz
En uno de nuestros scripts analizamos datos correspondientes a las temperaturas en cierta zona
del Pacifico Norte y su correlacin en ros de la provincia de Corrientes, mediante herramientas de
minera de datos. La primera tarea fue el armado de una matriz:
33 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
# Red neuronal con AMORE para correr correlacin hdrica entre ICG y rio Corrientes
# Junio de 2012. Armando Taie / Edwin Aguiar
# Instituto Nacional de Tecnologia Agropecuaria (INTA)
# Estacion Experimental Agropecuaria Corrientes / Mineria de Datos
#==================================================================================
# CONEXION A LA DB
#==================================================================================
library(RODBC)
ch <- odbcConnect("database", "usuario", "contrasena")
odbcGetInfo(ch)
#==================================================================================
# detalle de tablas especificas de la DB:
# Cod_afo (codigos de aforo), Cod_med (codigos de mediciones), son tablas parseadas
# relacionadas para RIOS, la tabla objetivo de las consultas.
#----------------------------------------------------------------------------------
# crudos, pledesma, mirinay, sroquito son tablas obsoletas de datos RIOS, sin uso.
#----------------------------------------------------------------------------------
# nomenclatures es la tabla relacionada con denominacion de indicadores de la tabla
# parseada INDICATORS, con los valores de estos indicadores oceanicos y objeto de la consulta
#==================================================================================
# CREACION y CARGA DE VECTORES EN MATRIZ
#==================================================================================
# detalle de la nomenclatura> P: vector, '1'numero de indicador, 'a,b,c' year, month,
# value, los tres vectores se indexan en una matriz 'N'
# M: matriz de 3x744 '1' numero de indicador
#-----------------------------------------------------------------------------------
#----> creamos vectores indicador 1 y matriz de year, month y value:
P1a<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `year` FROM `indicators` where `indicator` = 1 " , sep="")))); #M<-P;
P1b<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `month` FROM `indicators` where `indicator` = 1 " , sep="")))); #M<-P;
P1c<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `value` FROM `indicators` where `indicator` = 1 " , sep="")))); #M<-P;
M1<- matrix(nrow = 744, ncol = 3);
M1<-cbind(P1a,P1b,P1c);
#-----> lo mismo, indicador 2:
P2a<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `year` FROM `indicators` where `indicator` = 2 " , sep="")))); #M<-P;
P2b<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `month` FROM `indicators` where `indicator` = 2 " , sep="")))); #M<-P;
P2c<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `value` FROM `indicators` where `indicator` = 2 " , sep="")))); #M<-P;
M2<- matrix(nrow = 744, ncol = 3);
M2<-cbind(P1a,P1b,P1c);
#-----> lo mismo, indicador 3:
P3a<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `year` FROM `indicators` where `indicator` = 3 " , sep="")))); #M<-P;
P3b<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `month` FROM `indicators` where `indicator` = 3 " , sep="")))); #M<-P;
P3c<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `value` FROM `indicators` where `indicator` = 3 " , sep="")))); #M<-P;
M3<- matrix(nrow = 744, ncol = 3);
M3<-cbind(P1a,P1b,P1c);
#-----> lo mismo, indicador 4:
P4a<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `year` FROM `indicators` where `indicator` = 4 " , sep="")))); #M<-P;
P4b<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `month` FROM `indicators` where `indicator` = 4 " , sep="")))); #M<-P;
P4c<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `value` FROM `indicators` where `indicator` = 4 " , sep="")))); #M<-P;
M4<- matrix(nrow = 744, ncol = 3);
M4<-cbind(P1a,P1b,P1c);
#-----> lo mismo, indicador 5:
P5a<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `year` FROM `indicators` where `indicator` = 5 " , sep="")))); #M<-P;
P5b<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `month` FROM `indicators` where `indicator` = 5 " , sep="")))); #M<-P;
P5c<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `value` FROM `indicators` where `indicator` = 5 " , sep="")))); #M<-P;
M5<- matrix(nrow = 744, ncol = 3);
M5<-cbind(P1a,P1b,P1c);
#-----> lo mismo, indicador 6:
P6a<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `year` FROM `indicators` where `indicator` = 6 " , sep="")))); #M<-P;
34 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
P6b<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `month` FROM `indicators` where `indicator` = 6 " , sep="")))); #M<-P;
P6c<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `value` FROM `indicators` where `indicator` = 6 " , sep="")))); #M<-P;
M6<- matrix(nrow = 744, ncol = 3);
M6<-cbind(P1a,P1b,P1c);
#-----> lo mismo, indicador 7:
P7a<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `year` FROM `indicators` where `indicator` = 7 " , sep="")))); #M<-P;
P7b<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `month` FROM `indicators` where `indicator` = 7 " , sep="")))); #M<-P;
P7c<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `value` FROM `indicators` where `indicator` = 7 " , sep="")))); #M<-P;
M7<- matrix(nrow = 744, ncol = 3);
M7<-cbind(P1a,P1b,P1c);
#-----> lo mismo, indicador 8:
P8a<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `year` FROM `indicators` where `indicator` = 8 " , sep="")))); #M<-P;
P8b<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `month` FROM `indicators` where `indicator` = 8 " , sep="")))); #M<-P;
P8c<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `value` FROM `indicators` where `indicator` = 8 " , sep="")))); #M<-P;
M8<- matrix(nrow = 744, ncol = 3);
M8<-cbind(P1a,P1b,P1c);
#-----> lo mismo, indicador 9:
P9a<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `year` FROM `indicators` where `indicator` = 9 " , sep="")))); #M<-P;
P9b<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `month` FROM `indicators` where `indicator` = 9 " , sep=""))));#M<-P;
P9c<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `value` FROM `indicators` where `indicator` = 9 " , sep=""))));#M<-P;
M9<- matrix(nrow = 744, ncol = 3);
M9<-cbind(P1a,P1b,P1c);
#-----> lo mismo, indicador 10:
P10a<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `year` FROM `indicators` where `indicator` = 10 " , sep="")))); #M<-P;
P10b<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `month` FROM `indicators` where `indicator` = 10 " , sep="")))); #M<-P;
P10c<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `value` FROM `indicators` where `indicator` = 10 " , sep="")))); #M<-P;
M10<- matrix(nrow = 744, ncol = 3);
M10<-cbind(P1a,P1b,P1c);
#-----> lo mismo, indicador 11:
P11a<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `year` FROM `indicators` where `indicator` = 11 " , sep="")))); #M<-P;
P11b<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `month` FROM `indicators` where `indicator` = 11 " , sep=""))));#M<-P;
P11c<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `value` FROM `indicators` where `indicator` = 11 " , sep="")))); #M<-P;
M11<- matrix(nrow = 744, ncol = 3);
M11<-cbind(P1a,P1b,P1c);
#-----> lo mismo, indicador 12:
P12a<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `year` FROM `indicators` where `indicator` = 12 " , sep="")))); #M<-P;
P12b<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `month` FROM `indicators` where `indicator` = 12 " , sep="")))); #M<-P;
P12c<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `value` FROM `indicators` where `indicator` = 12 " , sep="")))); #M<-P;
M12<- matrix(nrow = 744, ncol = 3);
M12<-cbind(P1a,P1b,P1c);
#-----> lo mismo, indicador 13:
P13a<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `year` FROM `indicators` where `indicator` = 13 " , sep="")))); #M<-P;
P13b<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `month` FROM `indicators` where `indicator` = 13 " , sep="")))); #M<-P;
P13c<-as.real(as.matrix(sqlQuery(ch, as.is=TRUE, paste("SELECT `value` FROM `indicators` where `indicator` = 13 " , sep="")))); #M<-P;
M13<- matrix(nrow = 744, ncol = 3);
M13<-cbind(P1a,P1b,P1c);
#=================================================================================
# creamos una superMatrix
#=================================================================================
N<-matrix(nrow=744, ncol=39);
N<-cbind(M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13);
# USO> N[a,b] donde a: fila y b: columna, las filas son 744 valores y las columnas
# sets de tres valores (year, month, value), P1a,P1b,P1c hasta P13a, P13b, P13c.
# llamar a valor de abril de 1963 del indicador 13 =====> N[200,37] -> year (1963),
# N[200,38] -> month (4) y el valor: N[200.39] nos dara 0.14.
# Esta matrix es solo a efectos de constatar valores en caso de requerir una vista
# rapida del total general. Solo imprimira 10.000 numeros salvo que se modifique
# el parametro getOption("max.print")
35 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
#*********************************************************************************
# CREACION DE LA MATRIZ DE ENTRADA A LA RED NEURONAL #
#*********************************************************************************
# se concatenan los vectores p1c al p13c (vectores de valores), para seleccionar
# eliminar los vectores no deseados. Eliminar P1a y P1b para salida de 10K.
#---------------------------------------------------------------------------------
# X<-cbind(P1a,P1b,P1c,P2c,P3c,P4c,P5c,P6c,P7c,P8c,P9c,P10c,P11c,P12c,P13c);
X<-cbind(P1c,P2c,P3c,P4c,P5c,P6c,P7c,P8c,P9c,P10c,P11c,P12c,P13c);
Es posible que de entrada no comprenda demasiado de este cdigo. No se preocupe, sin embargo
es fcil de interpretar si lo analiza desde una ptica guiada.
Lo azul son comentarios que sirven para comprender lo que se ha programado, es una
buena practica hacerlo, ya que al tiempo es muy usual que se olvide que quiso hacer en
esa parte del script en su oportunidad, adems al compartir sirve de gua a terceros. El
carcter # al inicio de la lnea indica que eso es un comentario y no una instruccin al
programa.
La primera parte es la carga de una librera para conectar a una base de datos MySql, ya
hablaremos de ello mas adelante.
La segunda es la obtencin de los datos de esa base de datos y la creacin de varios
vectores P1aP13c con datos especficos para el anlisis
Luego los vectores se van uniendo en matrices |Mn| y confluyen en una gran matriz |X|
El resultado es una matriz de 744 filas por 13 columnas que en parte reproducimos aqu:
Esto luego ser ingresado para su anlisis en una red neuronal. Es destacable que la mayora del
trabajo de R es repetitivo. Si se observa con detenimiento el ejemplo se advertir que es
simplemente la repeticin de pocos pasos, trece veces, con una configuracin especfica a cada
situacin, pero en definitiva si observamos el alma es un trabajo sencillo.
36 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Las funciones que Ud. lea en el script y
que no comprenda recuerde de buscarlas
en la ayuda, en poco tiempo dominara la
mayora de las posibilidades de R.
Ms Operaciones y funciones con matrices
Regresando a las matrices, hay varias operaciones y
funciones que permiten un trabajo fluido en R. En el
primer cuadro, las operaciones bsicas. En el
segundo las funciones ms usuales.
14
No son las nicas, ya que existen tantas como para
hacer dulce; para ampliar o conocer ms
posibilidades consulte la ayuda de R en Rstudio.
14
Extrados de www.unbarquero.blogspot.com.ar/2009/03/r-matrices.html
37 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
5. Listas
Una lista es una coleccin ordenada de datos, como un vector, pero con la diferencia del vector,
puede contener tipos de datos diferentes.
Los elementos que integran la lista se denominan componentes, tal como se menciono arriba,
estos componentes pueden ser valores numricos, cadenas de caracteres, valores lgicos e incluso
vectores o matrices. La funcin que crea y maneja las listas es list(). Su sintaxis en un ejemplo es:
> agenda<- l i st ( nombr e="J uan", apel l i do="Per ez", codi go="101", cat egor i a="a")
> agenda
$nombr e
[ 1] "J uan"
$apel l i do
[ 1] "Per ez"
$codi go
[ 1] "101"
$cat egor i a
[ 1] "a"
Donde las etiquetas (nombre, apellido, cdigo y categora) poseen un valor asignado. Si por
ejemplo quisiramos agregar un vector o matriz solo deberamos incluirlo en uno de los campos, o
agregar esta lista a una lista que contenga dichos elementos.
El acceso a los componentes se efecta mediante el ndice numrico o por su nombre:
> agenda$nombr e[ 1] "Pedr o"
> agenda$cat egor i a
[ 1] "a"
> agenda$apel l i do
[ 1] "Rodr i guez"
> agenda[ 1]
$nombr e
[ 1] "Pedr o"
> agenda[ [ 1] ]
[ 1] "Pedr o"
> agenda[ [ "nombr e"] ]
[ 1] "Pedr o"
>
Supongamos que no le hemos puesto nombres a los componentes de la lista, en el ejemplo
siguiente vemos como hacerlo:
> agenda<- l i st ( 1, " ahor a" , T, c( 23, 34, 45) )
> agenda
[ [ 1] ]
[ 1] 1
[ [ 2] ]
[ 1] " ahor a"
[ [ 3] ]
[ 1] TRUE
[ [ 4] ]
[ 1] 23 34 45
> names( agenda) <- c( " est ado" , " cuando" , " f unci ona" , " var i abl es" )
> agenda
$est ado
[ 1] 1
$cuando
[ 1] " ahor a"
$f unci ona
[ 1] TRUE
$var i abl es
[ 1] 23 34 45
38 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Primero hemos creado la lista y despus le hemos colocado los nombres a los componentes. Si
deseamos agregar un nuevo campo solo debemos colocarlo en la posicin siguiente (u otra) de la
lista, por ejemplo en este caso en la 5ta con una instruccin de asignacin nombrando al nuevo
elemento:
> agenda$nombr e_per r o<- "Sul t an"
> agenda
$est ado
[ 1] 1
$cuando
[ 1] "ahor a"
$f unci ona
[ 1] TRUE
$var i abl es
[ 1] 23 34 45
$nombr e_per r o
[ 1] "Sul t an"
Si por algn motivo deseamos eliminar un componente de la lista, aplicamos agenda[posicin en
numero]=NULL y se corren todos los elementos de dicha lista, si los hubiera detrs del eliminado.
Tambin se puede renombrar un componente utilizando names(lista)[nro componente]<-nuevo
nombre:
> names( agenda) [ 5] <- "Nombr e_del _j ef e"
> agenda
$est ado
[ 1] 1
$cuando
[ 1] "ahor a"
$f unci ona
[ 1] TRUE
$var i abl es
[ 1] 23 34 45
$Nombr e_del _j ef e
[ 1] "Sul t an"
Aplicar funciones a listas, vectores y matrices
Se pueden realizar muchas funciones sobre una lista(vectores y matrices) con la funcin lapply(),
til en casos de valores numricos. Primero creamos una lista con un vector X y una matriz W
# obser ve como se cr ea l a secuenci a de nmer os
> x<- c( 1: 15)
> x
[ 1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)
# obser ve como se cr ea l a secuenci a de nmer os, f i l as y col umnas)
> w<- mat r i x( 12: 23, 3, 4> w
[ , 1] [ , 2] [ , 3] [ , 4]
[ 1, ] 12 15 18 21
[ 2, ] 13 16 19 22
39 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
[ 3, ] 14 17 20 23
# cr eamos l a l i st a cont eni endo el vect or y l a mat r i z
> l i st a<- l i st ( vect or =x, mat r i z=w)
# l i st amos por pant al l a el r esul t ado
> l i st a
$vect or
[ 1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
$mat r i z
[ , 1] [ , 2] [ , 3] [ , 4]
[ 1, ] 12 15 18 21
[ 2, ] 13 16 19 22
[ 3, ] 14 17 20 23
Ahora que ya tenemos una lista podemos aplicar algunas de las funciones de R al conjunto de
datos. Por ejemplo una media, sumar un trmino, raz cuadrada etc:
> l appl y( l i st a,
mean)
$vect or
[ 1] 8
$mat r i z
[ 1] 17. 5
> l appl y( l i st a, "*", 5)
$vect or
[ 1] 5 10 15 20 25 30
35 40 45 50 55 60 65 70
75
$mat r i z
[ , 1] [ , 2] [ , 3] [ , 4]
[ 1, ] 60 75 90 105
[ 2, ] 65 80 95 110
[ 3, ] 70 85 100 115
> l appl y( l i st a, sqr t )
$vect or
[ 1] 1. 000000 1. 414214 1. 732051 2. 000000
2. 236068 2. 449490 2. 645751 2. 828427
3. 000000 3. 162278 3. 316625
[ 12] 3. 464102 3. 605551 3. 741657 3. 872983
$mat r i z
[ , 1] [ , 2] [ , 3] [ , 4]
[ 1, ] 3. 464102 3. 872983 4. 242641 4. 582576
[ 2, ] 3. 605551 4. 000000 4. 358899 4. 690416
[ 3, ] 3. 741657 4. 123106 4. 472136 4. 795832
Algunas funciones para lappy()
La funcin lapply() es el acrnimo de list-apply
(aplicar a lista), para extender la usabilidad del
comando es conveniente consultar la ayuda de R.
Para finalizar el tem de listas es posible
concatenar varias en una grande utilizando el
comando c(): GranLista<-c(lista1,lista2,,listan)
6. Series temporales
La funcin ts crea un objeto de clase "ts" (serie de tiempo) a partir de un vector (serie de tiempo
nica) o una matriz (serie multivariada). Las opciones que caracterizan un objeto de este tipo son:
t s( dat a = NA, st ar t = 1, end = numer i c( 0) , f r equency = 1, del t at = 1, t s. eps =
get Opt i on( "t s. eps") , cl ass, names)
Donde:
data es un vector o una matriz
start el tiempo de la primera observacin ya sea un nmero o un vector con dos enteros
end el tiempo de la ultima observacin especificado de la misma manera que start
frequency el nmero de observaciones por unidad de tiempo
deltat la fraccin del periodo de muestreo entre observaciones sucesivas (ej. 1/12 para
datos mensuales); nicamente se debe especificar o frequency o deltat, no ambos
ts.eps tolerancia para la comparacin de series. Las frecuencias se consideran iguales si su
diferencia es menor que ts.eps
class clase que se debe asignar al objeto; por defecto es "ts" para una serie univariada, y
c("mts", "ts") para una serie multivariada.
40 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
names para una serie multivariada, un vector de tipo carcter con los nombres de las
series individuales; por defecto los nombres de las columnas de data, o Serie 1, Serie 2, . . .
Ejemplo simple:
> t s( 1: 10, st ar t =1963)
Ti me Ser i es:
St ar t = 1963
End = 1972
Fr equency = 1
[ 1] 1 2 3 4 5 6 7 8 9 10
> t s( 1: 47, f r equency=12, c( 1963, 2) )
J an Feb Mar Apr May J un J ul Aug Sep Oct Nov Dec
1963 1 2 3 4 5 6 7 8 9 10 11
1964 12 13 14 15 16 17 18 19 20 21 22 23
1965 24 25 26 27 28 29 30 31 32 33 34 35
1966 36 37 38 39 40 41 42 43 44 45 46 47
Ejemplo de un objeto ts multivariado, creando los datos y asignndoles las fechas de inicio y
finalizacion:
z <- t s( mat r i x( r t ( 200 * 8, df = 3) , 200, 8) , st ar t = c( 1961, 1) , f r equency = 12)
Salida de pantalla del objeto z
Los 8 vectores de
200 elementos
conforman una
matriz generada por
la funcion de
densidad df, desde
enero de 1961 hasta
agosto de 1977 (200
meses), para llegar a
diciembre de 1977
hubieramos modificado el valor 200 por 204 en ambos parametros de la matriz, ya que esta (o el vector) da
el parametro end del objeto ts:
Aug 1977 0. 344485638 0. 10038734 0. 4793899037 0. 938980707 0. 51215920 - 0. 652676989 - 4. 201032383 0. 19732965
Sep 1977 - 0. 017276507 - 0. 58275948 1. 2765019418 - 0. 587473105 - 1. 27479022 - 0. 735514614 - 0. 593461925 - 1. 20529338
Oct 1977 - 0. 400361565 - 0. 70152649 0. 3270212261 0. 846609274 - 0. 09344580 - 0. 073988515 - 2. 013691343 1. 43581177
Nov 1977 - 1. 047250442 - 3. 63683123 - 1. 7609765624 - 1. 418322486 - 0. 30770078 - 0. 261224369 0. 186109543 - 0. 22609936
Dec 1977 0. 508033325 - 0. 22636919 - 0. 0945126165 - 0. 416216730 - 1. 58260960 - 1. 234875595 - 0. 065235039 - 2. 31813237
Por ultimo un ploteo del ejemplo de la ayuda de R que
utilizamos para explicar el cdigo anterior:
El cdigo completo:
> ## Mul t i var i at e
> z <- t s( mat r i x( r t ( 204 * 8, df = 3) , 204, 8) ,
+ st ar t = c( 1961, 1) , f r equency = 12)
> pl ot ( z, yax. f l i p = TRUE)
> pl ot ( z, axes = FALSE, ann = FALSE, f r ame. pl ot =
TRUE, mar . mul t i = c( 0, 0, 0, 0) , oma. mul t i = c( 1, 1, 5, 1) )
> t i t l e( "pl ot ( t s( . . ) , axes=FALSE, ann=FALSE,
41 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
f r ame. pl ot = TRUE, mar . . . , oma. . . ) ")
>
> z <- wi ndow( z[ , 1: 3] , end = c( 1977, 12) )
> pl ot ( z, t ype = "b") # mul t i pl e
> pl ot ( z, pl ot . t ype="si ngl e", l t y=1: 3, col =4: 2)
Los parmetros en rojo son los modificados para que la graficacin llegue a diciembre de 1977.
7. Dataframes
El objeto data.frame, en espaol hojas de datos, es similar a una matriz pero con el concepto de
listas, ya que a diferencia de las primeras, admite datos de distinto tipo. Hay algunos que la
definen como una coleccin indexada de listas, otros como el objeto ms eficiente para el anlisis
de datos
15
Los objetos data.frame se pueden construir de varias maneras:
Mediante la instruccin data.frame()
Mediante la lectura de una tabla almacenada en un archivo, con read.table()
Mediante la adiccin y forzado a la condicin data.frame de otros elementos con la
instruccin as.data.frame() esto acopla los vectores, factores, listas o matrices.
Las condiciones del objeto data.frame
Estas ofician de restricciones y son las siguientes segn explica la documentacin del sitio oficial
de R
16
:
Los componentes deben ser vectores (numricos, cadenas de caracteres, o lgicos),
factores, matrices numricas, listas u otras hojas de datos.
Las matrices, listas, y hojas de datos contribuyen a la nueva hoja de datos con tantas
variables como columnas, elementos o variables posean, respectivamente.
Los vectores numricos y los factores se incluyen sin modificar, los vectores no numricos se
fuerzan a factores cuyos niveles son los nicos valores que aparecen en el vector.
Los vectores que constituyen la hoja de datos deben tener todos la misma longitud, y las
matrices deben tener el mismo tamao de filas
A continuacin un ejemplo para crear un data.frame a partir de otros elementos:
> pel aj e<- f act or ( c( "bl anco", "caf e", "negr o", "bl anco") )
> peso<- c( 2. 45, 1. 90, 2. 00, 1. 95)
> conej os<- dat a. f r ame( Pel aj e=pel aj e, Peso=peso, Cr i as=c( 8, 6, 8, 7) )
> conej os
> conej os
Pel aj e Peso Cr i as
1 bl anco 2. 45 8
2 caf e 1. 90 6
3 negr o 2. 00 8
4 bl anco 1. 95 7
15
Mtodos Estadsticos con R y RComander (versin 2.1) Prof. Dr. Antonio Jos Sez Castillo. Universidad de Jan, 2010 (pg 22)
16
Introduccin a R, Core Team, pg 35
42 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
En azul la salida de pantalla del data.frame, integrando el factor pelaje, el vector peso y el vector
aadido cras. Las matrices, al igual que casi todos los objetos, pueden ser forzadas. En este caso a
hoja de datos mediante as.data.frame:
> secuenci a<- mat r i x( 1: 30, 5, 6) # cr eamos una mat r i z secuenci al 1 a 30
> secuenci a # i mpr i mi mos en pant al l a
[ , 1] [ , 2] [ , 3] [ , 4] [ , 5] [ , 6]
[ 1, ] 1 6 11 16 21 26
[ 2, ] 2 7 12 17 22 27
[ 3, ] 3 8 13 18 23 28
[ 4, ] 4 9 14 19 24 29
[ 5, ] 5 10 15 20 25 30
> hoj a_cal cul o_1<- as. dat a. f r ame( secuenci a) # conver t i mos a dat a. f r ame
> hoj a_cal cul o_1 # i mpr i mi mos en pant al l a
V1 V2 V3 V4 V5 V6
1 1 6 11 16 21 26
2 2 7 12 17 22 27
3 3 8 13 18 23 28
4 4 9 14 19 24 29
5 5 10 15 20 25 30
Observe que las columnas se enumeran V
1
, V
2
V
n
si deseamos ponerles un nombre especifico
debemos crear un vector de nombres mediante names:
> names( hoj a_cal cul o_1) <- c( "Uno", "Dos", "Tr es", "Cuat r o", "Ci nco", "Sei s")
> hoj a_cal cul o_1
Uno Dos Tr es Cuat r o Ci nco Sei s
1 1 6 11 16 21 26
2 2 7 12 17 22 27
3 3 8 13 18 23 28
4 4 9 14 19 24 29
5 5 10 15 20 25 30
Algunas formas de llamar a la hoja y a sus datos:
> conej os
Pel aj e Peso Cr i as
1 bl anco 2. 45 8
2 caf e 1. 90 6
3 negr o 2. 00 8
4 bl anco 1. 95 7
> conej os$Pel aj e
[ 1] bl anco caf e negr o bl anco
Level s: bl anco caf e negr o
> conej os$Pel aj e[ 3]
[ 1] negr o
Level s: bl anco caf e negr o
> conej os$Peso[ 4]
[ 1] 1. 95
> conej os$Cr i as[ 1]
[ 1] 8
Nota 10
Cmo saber que objetos tenemos? Con el
comando ls() lista los objetos en memoria
del workspace. Si deseamos saber que tipo
de objeto se trata, con is.data.frame(),
is.matrix() o is.vector() nos responder:
> l s( )
[ 1] "l i st a" "w" "x"
> i s. l i st ( l i st a)
[ 1] TRUE
> i s. dat a. f r ame( w)
[ 1] FALSE
> i s. vect or ( x)
[ 1] TRUE
43 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
8. Operadores y funciones
Como todo programa y entorno de programacin (R es un lenguaje interpretado, no compilado
17
),
posee una vasta coleccin de operadores. En las dos tablas que se adjuntan, se exponen algunos
de ellos. Los operadores se suelen
clasificar en unarios, binarios etc.,
segn la cantidad de parmetros
que intervienen en su expresin.
El uso general es variable_1
operador variable_2
A != B (dar TRUE o FALSE)
A + B (dar la adiccin de ambos)
A & B (dar TRUE o FALSE segn
la tabla de verdad)
La asignacin no debe utilizarse
con el signo = sino con <-:
C<-A+B (C recibe la suma de A y
B)
La igualdad (comparacin) es
==
Las funciones en general reciben uno o ms parmetros de una o ms variables. En la segunda
tabla observamos que sum(x) o prod(x) [sumatoria y productorio] reciben un vector, matriz o
variable unidimensional, en el ejemplo c=7 y d es un vector de 1 a 10:
> pr od( c)
[ 1] 7
> d<- c( 1: 10)
> pr od( d)
[ 1] 3628800
> sum( c)
[ 1] 7
> sum( d)
[ 1] 55
> f act or i al ( d)
[ 1] 1 2 6 24 120 720 5040 40320 362880 3628800
En el ejemplo vemos tambin que el factorial d es igual al productorio d, dos formas de
realizar lo mismo. Por supuesto hay muchas mas funciones, y cada da se agregan mas en
numerosos paquetes que se van compartiendo en los repositorios. Estos sitios son de donde
descargamos paquetes especficos para ciertos tipos de clculos o necesidades.
17
Es decir que no genera ejecutables o aplicaciones independientes de su propio entorno.
44 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Una noticia, varios ejercicios de clculo
Hace un tiempo, en una revista matemtica en Espaa, una joven logro emular la proeza de Gauss
cuando era nio; me refiero a la sumatoria de los 100 primeros nmeros. Usualmente para realizar
este ejercicio se suman los trminos (n
1
+n
2
+n
3
+n
n
), simbolizados asi:
(
=1
Esto significa sumar los trminos de x desde 1 hasta n
Si no disponemos de una pc o una calculadora cientfica puede ser engorroso sino imposible (las
calculadoras en general no poseen memoria suficiente para almacenar esta larga suma en una sola
operacin). Si tenesmo una calculadora cientfica o un pc es mas sencillo.
En R la sumatoria es sum(), la maquina realiza las iteraciones (repeticiones) una y otra vez. La
joven de la noticia, lo resolvi con una simple formula que solo utiliza operadores comunes
matemticos: n(n+1)/2
Nuestro ejercicio: Si quisiramos saber cual es la sumatoria de los primeros mil nmeros. Cual
es el resultado y como lo hara?
> sum( 1: 1000) # ut i l i zando l a f unci n sumat or i a de n
[ 1] 500500
> 1000*( 1000+1) / 2 # Haci endo el cal cul o de l a j oven espaol a
[ 1] 500500
Otro ejemplo de calculo: El cologaritmo
18
de un nmero es el logaritmo de su inverso, por tanto el
cologaritmo de un nmero es el opuesto de su logaritmo Cmo lo haramos en R?
> l og( 10)
[ 1] 2. 302585
> l og( 1/ 10) # el i nver so de n = 1/ n
[ 1] - 2. 302585
El logaritmo es definido como El logaritmo de un nmero, en una base dada, es el exponente al
cual se debe elevar la base para obtener el nmero
19
Si tenemos un logaritmo de base 2 (binario):
> l og2( 3)
[ 1] 1. 584963 # est e es el l ogar i t mo de 3
> 2^1. 584963 # si pot enci amos l a base ( 2) por el l ogar i t mo Qu t endr emos?
[ 1] 3. 000001 # su ant i l ogar i t mo! ( se ani ma a hacer l o con un l ogar i t mo nat ur al ?)
> l og( 8)
[ 1] 2. 079442
> 2. 7182807066232140698591273860753^2. 079442 # base de l og nat ur al es o neper i anos
[ 1] 7. 999997
En estos ejercicios lo que interesa es que comprenda como utilizar la consola, funciones y
parmetros. Pruebe realizar toda serie de clculos, explorando las posibilidades de R y leyendo la
ayuda. Eso le dar ductilidad en el manejo de expresiones (as se llaman las lneas de programa)
para intentar cosas mas complejas o comprenderlas.
18
Se denomina cologaritmo de un nmero a su inverso 1/N, de manera tal que log(n) + log(1/n)=0
19
Elementos de matemticas Kutuzov, ed Mir 1980
45 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Como hacer secuencias
20
Habr advertido que a lo largo del texto hemos salido del paso cuando necesitamos generar datos
para trabajar o demostrar, lo hacamos con secuencias. Aqu veremos algunas
Secuencias regulares
Secuencias aleatorias
Las secuencias regulares como su nombre lo indican, consisten en aquellas que siguen un orden.
Hay varias maneras de crearlas:
La primer manera es
indicar el rango desde
hasta con 1:30, expresin
muy usada para crear
vectores: a<-c(1:30)
La segunda es la funcin
seq() (de sequence:
secuencia) que consta de un primer parmetro que es desde, el segundo hasta, el tercero el paso
(by) que indica la escala y un cuarto que establece una condicin de conclusin.
21
En la captura
de pantalla se puede ver que incluso se pueden generar secuencias hacia atrs (recuerde que el
parmetro By debe tener signo negativo).
Las secuencias aleatorias estn
compendiadas en la siguiente tabla
22
El
uso de cada cual depende de los
parmetros propios de cada tipo de
distribucin. Ejemplos:
> r nor m( 19)
[ 1] - 0. 38907028 - 1. 16947999
0. 14250125 - 0. 43886069 - 1. 24466640 -
0. 12730233 1. 01931524 - 0. 10994081 -
0. 77472142 0. 18728813 - 0. 33068797 -
0. 56841233 1. 02925734 0. 49822730
0. 68306228 - 0. 09419181 - 0. 11362381
1. 67033036 0. 41387123
> r poi s( 14, 10)
[ 1] 9 7 12 16 9 8 6 12 12 5 13
15 10 9
Por comodidad solemos usar rnorm() o rbinom() pero al tener varios decimales, para usos
sencillos es algo engorroso, por eso tambin utilizamos round() que establece dos
parmetros: dato a redondear y decimales, por ejemplo c<- r ound( r nor m( 20) , 2)
que nos dar 20 nmeros aleatorios redondeados a dos decimales.
20
En matematicas a estas secuencias se les denomina sucesiones
21
Una tercer manera es concatenar un vector en crudo: vect or <- c( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
22
R para principiantes Prof. Emmanuel Paradis (Universidad de Montepellier II), traduccin de Jorge A. Ahumada (Universidad de
Hawaii) pg. 17 y ssgtes
46 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
9. Leer y guardar datos
El sentido y objeto de R es procesar datos en un entorno estadstico que con el tiempo se han ido
incluyendo ms disciplinas como por ejemplo minera de datos, concepto que involucra muchos
procedimientos nuevos como las redes neuronales, los arboles de decisin, etc., esto acarrea
volmenes mayores de datos para ingresar, procesos intermedios y las salidas consecuentes.
Lejos estamos de la poca que para hacer un estudio estadstico o un anlisis bastaba teclear una
docena o dos de datos.
Por esto es evidente que a la hora de procesar datos para obtener informacin relevante, no
vamos a entrar uno a uno cada dato; para eso tenemos algn tipo de repositorio
23
de datos que
accedemos para tomar selectivamente o a granel lo necesario y procesarlo. Lo mismo para la
salida, un repositorio que permita guardar esos datos elaborados (informacin) de manera tal que
podamos leerlos para extraer las conclusiones pertinentes.
Por ejemplo en algunas de nuestras bases de datos albergamos algunos datos crudos:
Cl i ma: 558. 775
Ger mopl asma 1: 11. 900
Tel ecomuni caci ones: 159. 140
No es una tentacin para cualquier estadstico o explorador de datos? Aun as, no son grandes
bases, pero el potencial de anlisis es grande.
a. Repositorios de datos
Para poder trabajar los datos se suelen importar a R mediante varios tipos de repositorios; a la
inversa, los resultados o pasos intermedios se suelen exportar tambin. Esencialmente pueden ser
repositorios:
Archivos de texto plano (CSV) delimitados por
comas, punto y coma o tabulaciones
Archivos de planillas de calculo Excell
Bases de datos (MySql y otras)
Direcciones de Internet.
Desde el teclado
24
b. Para comenzar: iniciar sesin en Rstudio
La primera operacin que se debe realizar antes de
cargar o guardar material desde R es determinar el
directorio por defecto. La manera de hacerlo en Rstudio
es por consola de comandos, por script o por la interfaz grafica.
23
Repositorio es un archivo o sistema que permite guardar los datos sin procesamiento alguno (crudos) tal como se han medido o
contado. No confundir con fuente, que puede ser, por ejemplo, un termmetro, un anemmetro, una encuesta, es decir los
instrumentos generadores.
24
El nico procedimiento existente en Rstudio es scan(), la funcin data.entry() no esta implementada en Rstudio pero si en R.
Nota 11
Tambin puede ingresar desde el teclado
en vivo valores mediante scan():
> scan( )
1: 23
2: 33
3: 44
4: 55
5:
Read 4 i t ems
[ 1] 23 33 44 55
Finaliza con una entrada de carcter nulo
(ent er)
47 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Pero esto depende del entorno de trabajo que se halle. Si utiliza Rstudio-
server el path (direccin del directorio de trabajo) lo determina Debian, el
servidor donde este alojado Rstudio server. Usualmente es
/home/<usuario>
En una instalacion local de Rstudio, el directorio por defecto es
C:/Users/<usuario> /Documents
En ambos casos la recomendacin es que para cada proyecto se utilice una
carpeta diferente, guardando no solo los scripts sino tambin el
workspace y los archivos que necesite.
Si usted va a correr una versin de Rstudio-server, debe primeramente conocer la IP (direccin
internet Protocol, un grupo de cuatro secuencias de tres nmeros) y el puerto donde se accede
al server. En nuestro ejemplo es: 192.168.0.102:8787
Donde 8787 es el puerto de acceso
y la secuencia previa la direccin.
Abrimos el navegador web
(aconsejamos Chrome Google) y
escribimos esa secuencia (o la que
su administrador de red le de). En la
imagen vemos el acceso a Rstudio server con el navegador Chrome, detalles de la direccin IP y
del panel de acceso (login) en los detalles.
En el caso de una instalacin local (solo en su pc) no hay acceso, solo debe plsar el icono en el
escritorio o en la barra de programas y accede.
48 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Arriba: Rstudio server a travs de una interfaz en el navegador WEB, abajo: Rstudio versin local
Como se advierte son idnticas ambas pantallas. Solo difieren en algunos aspectos menores (la
interfaz web requiere validacin como usuario con contrasea) no as en las funcionalidades y
elementos.
Una vez abierto el programa en cualquiera de sus dos modalidades, para comenzar y configurar su
directorio de trabajo debe saber donde esta. Con la funcin getwd() obtiene la ruta por defecto
en donde guardara sus archivos. En las dos imgenes siguientes se podr ver la misma en dos
49 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
entornos distintos, en el Server (que corre un Linux Debian)
25
y en una instalacin local en un
Windows 7
En la imagen de
la izquierda se
aprecia que es
la instalacin
del servidor, la
URL es visible.
En la
informacin de
versin tambin
nos lo indica. El
directorio por
defecto es
/home/usuario
En la imagen de
la derecha se
visualiza que la instalacin es local, en un Windows 7 y el directorio por defecto es /users/usuario/documentos Las
funciones versin y getwd() son las utilizadas para determinar esta informacin.
c. Configurar directorio
Para hacerlo por consola basta con utilizar el comando setwd(ruta):
En instalacin local Windows Errores:
> get wd( )
[ 1] " C: / User s/ Edwi n/ Document s"
> set wd( " C: / User s/ Edwi n/ Document s/ ar t i cul os/ pr oyect o" )
Er r or en set wd( " C: / User s/ Edwi n/ Document s/ ar t i cul os/ pr oyect o" ) :
no es posi bl e cambi ar el di r ect or i o de t r abaj o
> set wd( " C: / User s/ Edwi n/ Document s/ ar t i cul os/ pr oyect o" )
> get wd( )
[ 1] " C: / User s/ Edwi n/ Document s/ ar t i cul os/ pr oyect o"
No existe el directorio proyecto
En servidor Debian Errores:
> get wd( )
[ 1] "/ home/ edwi n"
> set wd( "/ home/ edwi n/ r / pr oyect o")
Er r or i n set wd( "/ home/ edwi n/ r / pr oyect o") :
cannot change wor ki ng di r ect or y
> set wd( "/ home/ edwi n/ R/ pr oyect o")
> get wd( )
[ 1] "/ home/ edwi n/ R/ pr oyect o"
Case sensitive: no es r sino R
el directorio (ver imagen)
d. Errores:
debe tener en cuenta que el directorio al cual ubicara su proyecto debe necesariamente existir. Si
no es asi, desde el panel de files (archivos) puede crear una nueva carpeta (folder) e incluso
25
Rstudio server se instala sobre Linux exclusivamente, hasta este momento. Las distribuciones que ya estn adecuadas para su
instalacin sin mayores compilaciones, son Debian, CentOs y Ubuntu. Utilizamos Debian debido a su facilidad, sus repositorios y su
manejo. Ubuntu y CentOs no le van a la zaga. Las dems distribuciones requieren de compilacin de las fuentes y eso a veces si no se es
conocedor se suele dificultar un poco. Si va a instalar Rstudio Server le recomendamos Debian
50 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
asignarla como directorio de trabajo por defecto en el mismo men grafico, tanto en la
instalacin del server como en la local. En la imagen se puede apreciar este trabajo.
En la primera de la izquierda creamos la carpeta, en la segunda asignamos como directorio de
trabajo por defecto.
Tambin es posible hacerlo desde el men ToolsSet working directory si no le agrada
hacerlo con la consola.
e. Lectura desde archivos
26
La clase utils posee varias funciones que permiten leer
varios cuyas funciones inician con read, tenemos
read.table(), read.csv(), read.swf(), read.csv2(),
read.delim() y read.delim2().
Un ejemplo de read.csv()
#conf i gur amos donde
set wd( "D: / mapas/ apel l i dos/ ")
# obt enemos l a mat r i z 100*3 apel l i dos
apel l i dos <- r ead. csv( "apel l i dos. csv", header =F)
#Vi ew( apel l i dos) # descoment ar par a que apar ezca
l a vent ana con l os apel l i dos
# ar r ay de nombr es de apel l i dos
nombr es<- as. ar r ay( apel l i dos$V1)
ci f r as<- as. ar r ay( apel l i dos$V2)
En la imagen lateral: un ejemplo con read.table(). El
directorio sobre el cual esta posicionado contiene el
archivo resultados, que es una tabla. Si no fuera asa en el parmetro deber indicar la ruta
absoluta: ( c: / user s/ usuar i o/ document os/ ar t cul os/ pr oyect o/ r esul t ados) . Se recomienda leer la
ayuda de Rstudio para comprender los parmetros necesarios para la apertura de estos archivos.
En el caso del CSV suele ser necesario indicar el tipo de delimitador (comas, espacios, tabulador,
26
Para escribir en archivos se utiliza la funcin write() que no explicaremos aqu dado que es muy similar a read(), pero se puede
consultar en el manual de R
51 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
punto y coma) adems si el header
(encabezado o vector con los
nombres) se carga. En la tabla
adyacente se pueden observar las
configuraciones de los parmetros
para read.table()
27
Un detalle a tener en cuenta es que
Excel genera archivos CSV que suelen
presentar problemas si no se advierte
que los separadores (delimitadores)
entre campos no siguen una norma
estandarizada.
Para abrir estos CSV se sugiere
revisar con un block de notas (no con
Word) y observar cual es la
separacin entre campos. De todas maneras la interfaz grafica de carga de Rstudio permite ver en
detalle el proceso de importacin y cargar los parmetros visualmente, e inclusive copindolos de
la consola, incorporarlos a un script. En las imgenes vemos la operatoria:
En el panel de Workspace, la pestaa import Dataset seleccionamos desde un archivo de texto.
Navegamos entre los directorios y seleccionamos por ejemplo- Resultados, la tabla que hemos
salvado. Al seleccionarla se abrir la ventana de
la imagen, all vemos dos vistas, la original y la
que se importara si utilizamos los criterios de
separator (delimitador), en este caso es espacio
en blanco, Decimal y Quote, que referencian a
los formatos de nmeros y textos. Finalmente
heading es el encabezado con el vector de
nombres, que se puede captar o no segn se
seleccione si o no. Es correcto tratar de levantar
distintos tipos de archivos (txt, csv) para
comprender el mecanismo. Si las opciones estn
bien configuradas debera ver el resultado similar
a la ventana inferior del ejemplo.
Al aceptar esta configuracin abrir la consola con un comando que puede copiar para guardar
(copy y paste) desde la consola a la ventana de scripts. Es un buen recurso para cuando hay dudas
en cuanto a como escribir correctamente los parmetros de la funcin read.table(). El ejemplo con
la imagen correspondiente:
27
R para principiantes o. cit. Tabla de pagina 11
52 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
> resultados <- read.table("~/articulos/proyecto/resultados", header=T, quote="\"")
El comando
view() nos
abre una
ventana en el
panel de
scripts con el
archivo, para
inspeccionar.
f. Escritura hacia archivos
Tanto como leer datos es importante saber guardarlos. La funcin por excelencia para escribir es
write(). La funcin simple es write(datos, file=archivo.extension) que guardara en el
directorio de trabajo (o en la ruta si la incorpora al nombre de archivo) su objeto de datos. Las
opciones a este comando permiten determinar el numero de columnas, si el archivo es rescrito o
agregado, si no existe crearlo, etc. El cuadro debajo ilustra sobre dichas opciones y su uso
28
La funcin write.table guarda el contenido de un objeto en un archivo. El objeto es usualmente un
data.frame, pero puede ser cualquier otro tipo de objeto que el usuario determine (vector, matriz,
lista etc. ). Los argumentos y parmetros son:
wr i t e. t abl e( x, f i l e = " " , append = FALSE, quot e = TRUE, sep = " " ,
eol = " \ n" , na = " NA" , dec = " . " , r ow. names = TRUE,
col . names = TRUE, qmet hod = c( " escape" , " doubl e" ) )
Write.table incorpora sep= que indica como van delimitados los datos, por ejemplo por
tabulador (\t), coma (,), punto y coma(;) tambien la indicacion de EOL (final de linea) con un
salto de linea ("\n"); etc. Debe prestar atencin que parmetros elegir para salvar sus datos, ya
que existen varios tipos de codificaciones que varan entre sistemas y programas (es proverbial la
28
R para principiantes op. Cit.
Nota 12
La mejor manera de importar datos a
Rstudio, en realidad a R, es crear desde el
programa que utilice, un archivo de texto
plano (CSV) e importarlo con la interfaz
grafica de Rstudio, as podr supervisar el
proceso y detectar si hay delimitadores o
marcas de formato que impidan la correcta
adicin de datos a su script.
53 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
mana de Microsoft Office para cambiar estos valores por defecto, a fin de tener un estndar
propio).
Por supuesto los mismos argumentos que utiliza write, se aplican a write.table. Tambin
se pueden guardar en otros formatos (bases de datos, csv, Excel, consulte la ayuda de las
libreras especificas para tal propsito)
g. Desde la web
Si quisiramos tomar un archivo de la web existe el comando downl oad. f i l e( )
La sintaxis que nos da la ayuda es la siguiente:
downl oad. f i l e( ur l , dest f i l e, met hod, qui et = FALSE, mode = "w", cacheOK = TRUE, ext r a =
get Opt i on( "downl oad. f i l e. ext r a") )
h. Excel y otros tipos de formatos
Los archivos con extensin de Excel XLS pueden ser abiertos instalando el paquete gdata y
utilizando la funcin read.xls() aunque es algo difcil de utilizar y adems requiere la instalacin
adicional de python.
Con el paquete XLConnect existe una funcin
readWorksheetFromFile() que permite leer los archivos
xlsx de excel 2007 2010, cuyo ejemplo vemos en la
imagen adjunta, la instruccin:
dat a2<-
r eadWor ksheet Fr omFi l e( "excel 2010. xl sx", sheet =1)
Carga en data2 la table de excel. Los archivos anteriores
de excel (xls) tambin se pueden cargar via ODBC con el
paquete RODBC, que sirve tambin para cargar datos
desde bases de datos como MySql y otras.
R no es particularmente bueno importando datos generados por otros programas. No obstante, el
paquete recomendado es foreign que lee ficheros en formatos propios de, entre otros, SPSS, SAS,
Minitab, Stata, Epi y S. Hay que destacar que los formatos pueden presentar ligeras variaciones de
unas versiones a otras (tpicamente, las versiones posteriores leen ficheros producidos mediante
las precedentes, pero no al revs). Podemos as encontrar que foreign nos permite leer, por
ejemplo, \worksheets" de Minitab de una versin determinada y las anteriores, pero no las
posteriores. Se impone por tanto tambin la prueba.
29
Sin embargo dentro de las opciones evite usar Excel ya que es muy comun que segn la
version del mismo (97, 2000, 2003, 2007, 2010) haya variaciones que hagan la lectura
dificil. En parte porque al cambiar el parametro XLM entre el 2003 y 2007, se suelen dar
problemas de compatibilidad al leerlos. Conviertalos a CSV y lea o grabe desde ese formato
29
Lectura, manipulacin y anlisis de datos en R, F. Tusell, actualizacin 2007 pag. 3; http://www.et.bs.ehu.es/~etptupaf
54 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
i. Conexiones ODBC y lectura-escritura en bases de datos
La lectura y escritura en bases de datos es la mejor opcin de trabajo para maximizar la potencia
de R, ya que la naturaleza de una DB (base de datos) es almacenar datos. Existe la costumbre de
utilizar Excel como repositorio de datos. A ese respecto hay una publicacin del investigador
especializado en ecologa de bosques, Dr (PhD) Duncan Golicher:
30
No sera una exageracin decir que la mayora de los errores en la captura y mantenimiento de datos tienen la
misma causa. Es el uso casi universal de hojas de clculo para la captura de datos. Las ventajas de hojas de
clculos son aparentes.
1. Su lgica es fcil de entender y usar.
2. Son universalmente disponibles en cualquier computadora.
3. Tienen herramientas potentes integradas para procesar y graficar datos.
4. La estructura de los datos es visualmente aparente y transparente
5. Usuarios avanzados de hojas de clculo pueden usar una hoja de clculo como si fuera un base de
datos sofisticada.
Efectivamente, mientras que sean correctamente utilizados las hojas de clculo son herramientas potentes. Sin
embargo las fortalezas de hojas de clculo estn relacionadas con sus debilidades principales. La flexibilidad
que hace hojas de clculo tan atractivas al mismo tiempo causa su mal uso y abuso. Al abrir una hoja de calculo
el usuario esta presentado con una hoja en blanco sin estructura. Entonces hay mucha tentacin de inventar
una estructura de datos particular para cada problema. El resultado es catico.
Una forma de evitar la mayora de los problemas comunes es sencilla. Siempre asegurar que se puede entrar
los datos en ...... una base de datos! Suena trivial y hasta tautolgico aconsejar que se use software diseado
para mantener datos para mantener datos! Sin embargo muchos estudiantes piensan que una hoja de clculo
como Excel es una base de datos.
No lo es. Manejar Excel como una base de datos relacionada es posible, pero no es nada fcil, ni para usuarios
expertos que saben programar en Visual Basic para aplicaciones. Para un usuario normal sin experiencia con
bases de datos sera imposible manejar datos con una estructura jerrquica compleja en Excel.
En cambio, muchas cosas que son difciles en Excel son fciles en una base de datos1. Adems la exportacin de
datos de una base de datos a Excel para su procesamiento siempre es fcil. Hasta con ODBC se puede hacer
una conexin directa para que Excel puede usar la potencia del structured query language
31
directamente.
Es comn encontrar una resistencia a tomar el camino del uso de bases de datos entre usuarios con algo de
experiencia intermedia con Excel. Al tener contacto con una base de datos de verdad como Access, MySQL o
PostgreSQL usuarios quienes han encontrado sus propios mtodos de lograr resultados en Excel
frecuentemente se quejan que el programa no les deja estructurar y capturar los datos como quieren.
Exactamente! Muy bien. Esta es precisamente su mayor ventaja. Si quieres mantener tus datos con una
estructura que no es posible en una base de datos, entonces estas ciertamente pensando en una estructura
equivocada para tus datos. Por todo lo lgico que te parezca, tu estructura casi siempre va a ser difcil de
comunicar a los dems y probablemente va a causarte muchos problemas al largo plazo.
Excel, es bueno recordarlo, es una planilla de clculos, mientras que una base de datos es lo que
su nombre indica, una base de datos. Es algo preparado para soportar grandes volmenes de
datos, procesarlos para servir consultas, filtrados, operaciones ABM (altas, bajas, modificaciones),
etc. Es una buena prctica que los datos se guarden siempre en una DB. Hay muchos tipos de base
30
Como mantener tus datos de investigacin ordenadas Duncan Golicher 2008,
31
SQL: lenguaje estructurado de consultas, lenguaje de manejo y administracin de DB
55 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
de datos, pero en general se definen entre relacionales y no relacionales. La diferencia esta dada
en que las primeras poseen ndices en una tabla que refieren a otras tablas. As por ejemplo un
cdigo en una tabla refiere a datos ms extensos que estn contenidos en una segunda tabla. El
mantenimiento de la segunda tabla es independiente de la primera, que solo utilizara estos ndices
para indicar ciertas condiciones dadas por esa codificacin.
En la imagen vemos un diagrama EER, esto es un diagrama o modelo entidad-relacin (a veces
denominado por sus siglas en ingls, E-R "Entity relationship", o del espaol DER "Diagrama de
Entidad Relacin") es una herramienta para el modelado de datos que permite representar las
entidades relevantes de un sistema de informacin as como sus interrelaciones y propiedades. En
el caso de las relaciones en una base de datos cientfica, como la del ejemplo
32
, tenemos que:
Los registros de la tabla ros nos refieren a las distintas relaciones, por ejemplo cod_rios
(cdigo de ros) involucra una forma de enumeracin por cada rio (en tablas separadas) Para
agregar un nuevo rio solo hace falta agregar el cdigo en cod_rios y crear la tabla especifica;
tambin vemos la relacin entre cod_med (cdigos de medicin) que refiere a distintas medidas
que se cargan tambin en las tablas de ros. Este esquema da flexibilidad y permite crear consultas
(query) muy especificas o filtradas que serian imposibles en un entorno excel. En R utilizando tan
solo la consulta adecuada se puede disponer de los datos con la granularidad deseada: muy
genricos o muy especficos, pasando por toda la gama intermedia.
32
Base de datos Flamenco en la que analizamos la relacin existente entre ros de Corrientes y determinados puntos del Pacifico
Norte, con el Investigador del Instituto de Clima y Agua INTA Castelar Dr Eduardo Flamenco. El EER es solo demostrativo, no refleja el
estudio en minera de datos con R que se esta efectuando al escribir estas lneas. (N del A)
56 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
j. Introduccin al mundo de las bases de datos
Las bases de datos difieren en un funcionamiento y forma en que estn programadas, pero poseen
una generalidad que las hace universales, es el SQL o lenguaje estructurado de consultas que hace
que una operacin sea mas o menos universal en todas las bases de datos.
Por ejemplo SELECT * FROM t abl a_equi s nos traer la informacin contenida en la totalidad
de la tabla_equis; SELECT i d, especi e, f _si embr a, f _emer genci a, f _cosecha FROM
t abl a_equi s WHERE condi ci n=x tendr una salida selectiva en cuanto a los datos y su
cantidad.
Un par de capturas de una DB MySql, la primera mediante un software que oficia de manejador de
la base de datos
33
, llamado phpmyadmin (especifico para MySql):
En la ventana de comando introducimos una instruccin sql, el resultado (4 registros) se aprecian
en la ventana grande de fondo. Si por el contrario usted posee acceso directo al servidor MySql
puede acceder tambin por consola, es un mtodo ms laborioso pero rpido.
En este ejemplo corremos un server de MySql local (dentro de la propia pc), tambin es posible
acceder a un server MySql en red LAN o en la Internet, colocando en la llamada el parmetro h
(host) que es donde esta el servidor de MySql, por ejemplo en 192.168.0.101; en nuestro ejemplo
el server esta ubicado en la propia pc, el server se llama localhost o 127.0.0.1, lo que no
requerir el parmetro h en la llamada.
En un par de imgenes puede ver como es el trabajo con esta modalidad, la preferida de la
mayora de los programadores ya que la pantalla de comandos es menos amigable. El programa
cliente de la base de datos se llama: mysql u r oot p [ ent er ] desde la consola de comandos
de su sistema
33
Los sistemas de gestin de bases de datos o mejor conocidos como SGBD (en ingls database management system,
abreviado DBMS) son un tipo de software muy especfico, dedicado a servir de interfaz entre la base de datos, el usuario y
las aplicaciones que la utilizan.(Wikipedia)
57 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
La consulta sql de la consola es la misma que la efectuada
en phpmyadmin, la salida es la misma: 4 registros
identificados con el Id (IdMani1) 12, 80, 156, 170
En definitiva el uso de la interfaz grafica o de la consola
depender de las preferencias del investigador, para
ambas deber consultar con su administrador de red
puesto que se requieren crear servers de DB, Apache y
Php (estos dos ltimos en caso de utilizar phpmyadmin).
Una solucin local (en su pc) es el programa XAMPP que
instala todo esto en una sola aplicacin.
k. R y MySql
En R se puede incorporar una consulta SQL mediante una
serie de instrucciones:
1 l i br ar y( RODBC)
2 ch <- odbcConnect ( "t el i p", "r oot ", "ent r opi a")
3 odbcGet I nf o( ch)
4 P<- as. r eal ( as. mat r i x( sql Quer y( ch, as. i s=TRUE,
past e( "SELECT br ut o FROM dat os wher e i d <101" ,
sep="") ) ) ) ;
La explicacin de este script es la siguiente:
En la lnea 1 se carga una librera especifica para conectar
mediante ODBC (un objeto del sistema que se especializa
en la conexiona bases de datos). Este OBDC oficia de
conducto entre la base de datos y el programa, llevando
las consultas y devolviendo el resultado. ODBC existe en
Windows, Linux y otras plataformas.
En la segunda lnea se crea un objeto ch que posee los
parmetros de conexin a ODBC y el usuario y password
de la base de datos.
La tercera lnea nos devuelve
un informe sobre la DB y nos
indica que la conexin posee
un status exitoso.
Finalmente la cuarta lnea nos extrae una consulta que se carga en un vector P de 100
elementos. Existe una lnea final que plotea un grafico que vemos a la derecha inferior de la
imagen:
58 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
l. Conducto ODBC
Una parte importante de la conexin ODBC es el conducto. En el
caso que nos ocupa es un driver que se descarga del sitio oficial
de MySql, al momento de esta redaccin es el 5.3. Este driver se
debe instalar en el server de Rstudio o en la instalacin local
(depende como se use Rstudio) y se configura en Debian
mediante una herramienta llamada UnixODBC, en Windows en
las herramientas
administrativas
existe el gestor de
Administracin de
orgenes ODBC,
ambas imgenes en
las capturas.
Para instalar y crear
los conductos ODBC
consulte con su
administrador de red,
ya que existen
algunos conceptos que pueden resultar difciles para un usuario que desconozca sobre redes,
direcciones IP y servidores de datos. Ante cualquier duda no dude en consultarnos. Finalmente en
Windows existen nativamente drivers de ODBC para Access y Excel.
59 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
m. Como guardar nuestros datos en MySql
No solo se trata de tomar los datos. Una vez elaborados debemos guardarlos de alguna manera. La
librera RODBC tambin posee las herramientas para realizar esta accin.
sql Save( channel , dat , t abl ename = NULL, append = FALSE, r ownames = TRUE, col names = FALSE,
ver bose = FALSE, saf er = TRUE, addPK = FALSE, t ypeI nf o, var Types, f ast = TRUE, t est = FALSE,
nast r i ng = NULL)
sql Updat e( channel , dat , t abl ename = NULL, i ndex = NULL, ver bose = FALSE, t est = FALSE,
nast r i ng = NULL, f ast = TRUE)
Si esto es demasiado tcnico para usted, no se preocupe, haremos un ejemplo esclarecedor (eso
esperamos) Tenemos una tabla llamada resultados cuya imagen adjuntamos. Esta compuesta de
10 campos, los cuales 9 son utilizados (el primero es el ndice nico de cada registro, no se repite).
El cdigo:
#==================================================================================
# GUARDAR DATOS EN RESULTADOS
#==================================================================================
l i br ar y( RODBC)
ch <- odbcConnect ( "ger mopl asma", "j ef e", "123456789")
odbcGet I nf o( ch)
#==================================================================================
sql Tabl es( ch) #l i st a l as t abl as exi st ent es
#==================================================================================
val or es<- c( r ound( r nor m( 10) , 2) ) # cr eamos val or es par a guar dar
mej or est o<- dat a. f r ame( "casos"=val or es) ; # cr eamos un dat a. f r ame
sql Save( ch, "r esul t ados", mej or est o, r ownames=FALSE, addPK=FALSE) ;
Este script guardara los datos del dataframe en su base de datos MySql. Como es
costumbre le aconsejamos que revise la bibliografa de la librera, ya que de versin en
versin pueden haber diferencias sutiles que ocasionen algn que otro dolor de cabeza;
de todas maneras si guardar en una base de datos se le complica, guarde en CSV, desde MySql
es posible importar estos datos con seguridad utilizando PhpMyAdmin.
60 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
n. Otras maneras de guardar datos en MySql
Por supuesto, al igual que en la matemtica, no hay un nico camino para hacer las cosas. Si
deseamos a toda costa y pese a los errores y avisos que emita Rstudio, la forma mas simple de
guardar nuestros datos es la misma manera en que se han rescatado: mediante una query. Una
sentencia pura de MySql en lugar de una funcin de RODBC. Cmo? Utilizando la expresin
propia del lenguaje SQL para ello y usando la funcin sqlQuery que ya utilizramos al llamar los
datos de una tabla. Veamos el proceso.
#==================================================================================
# PRI MERA PARTE: CONEXI ON A LA DB
#==================================================================================
l i br ar y( RODBC)
ch <- odbcConnect ( "ger mopl asma", "mi _usuar i o", "mi _passwor d")
odbcGet I nf o( ch)
#==================================================================================
sql Tabl es( ch) #l i st a l as t abl as exi st ent es
#==================================================================================
Esta salida nos dar las tablas existentes, solo a los fines de detallar y realizar la insercin
correctamente, la salida por consola:
TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS
1 ger mopl asma mani 1 TABLE
2 ger mopl asma r esul t ados TABLE
> #================================================================================
Tenemos dos tablas, una de la cual hemos extrado datos en el ejercicio de creacin de un script, y
la tabla resultados que esta creada en el tem anterior, para guardar los resultados de nuestros
clculos. En SQL la orden de guardar datos es la siguiente:
INSERT INTO tabla_donde_guardar VALUES (valor1,valor2, , valorN)
Donde valor1N es el valor en el tipo de datos especifico que guardara la tabla. En la imagen
del tem anterior observamos que la tabla Resultados posee tipo numrico decimal 12,2; significa
que admite nmeros de hasta 12 dgitos con dos decimales. Si requiere mas precisin en ellos,
debe cambiar a, por ejemplo, 12,4 etc.
Un ejemplo nos permite cargar datos a la Base:
sql Quer y( ch, as. i s=TRUE, past e( "I NSERT I NTO r esul t ados( val or 1, , val or N)
VALUES( val or [ 1] , val or [ N] , ) ") ) ;
Sin embargo a veces no resultan (sqlSave ni sqlQuery) debido a complejidades propias
de los lenguajes R y sql, especialmente por el tema de los caracteres que se utilizan en
uno y otro entorno. Si llegan a producirse problemas o incompatibilidades, consulte la
ayuda de RODBC.
61 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Creacin de un proyecto partiendo de cero
Un proyecto en Rstudio, como toda tarea sistemtica y metodolgica, exige algunos pasos previos
que hacen al resultado final. Estos pasos se pueden resumir en dos o tres conceptos generales:
Trace un plan de trabajo sobre que va a hacer, desde donde parte, con que elementos
cuenta para los anlisis y como los va a procesar para obtener una salida y de all la
conclusin que permita darle sentido a su trabajo.
Lo ideal es hacer este plan o esquema de trabajo en un papel, dividiendo las etapas de
manera clara y concisa, por ejemplo adquisicin de datos por csv, creacin de vectores
de anlisis, anlisis de vectores con matriz de correlaciones, etc., hasta llegar al final
que usualmente es un despliegue de datos (en forma de matriz, dataframes o vectores) y
grficos.
Corroborar todos los pasos intermedios y
resultados finales, revisando no solo los
datos y sus procesos, sino tambin las
funciones aplicadas. Muchas veces se
utilizan mal funciones que dan obviamente
resultados errneos o funciones no
adecuadas para el caso. Un defecto comn
es por ejemplo no normalizar valores
cuando tenemos muchas variables disimiles,
mezclar tipos de variables (continuas,
discretas, categricas etc.) o usar un mtodo
que quizs no sea el mas adecuado (por
ejemplo en agrupamientos clustering- se
utilizan distancias. Hay seis o siete tipos de
distancias Cul es la adecuada para su caso
especfico?)
Lo bueno del caso es que R posee una gran
comunidad cientfica y tcnica que comparte
conocimientos en listas de correos, si posee dudas y
no tiene a quien recurrir, la suscripcin (gratuita) a
estas listas ser fuente de conocimiento. Plantear su
duda en ella es un procedimiento habitual, ya que la
lista de paquetes y funciones de R siguen creciendo
da a da y estar al tanto de todos los paquetes y
actualizaciones es un trabajo ingente y nadie puede abarcar todo el conocimiento por si mismo.
Nota 13
Para suscribirse a la lista de R en espaol debe
darse de alta en la direccin
https://stat.ethz.ch/mailman/listinfo/r-help-es
Ejemplo de lista:
Enve los mensajes para la lista R-help-es a
[email protected]
Para subscribirse o anular su subscripcin a travs de la
WEB
https://stat.ethz.ch/mailman/listinfo/r-help-es
O por correo electrnico, enviando un mensaje con el
texto "help" en el asunto (subject) o en el cuerpo a:
[email protected]
Puede contactar con el responsable de la lista
escribiendo a:
[email protected]
Si responde a algn contenido de este mensaje, por
favor, edite la linea del asunto (subject) para que el
texto sea mas especifico que:
"Re: Contents of R-help-es digest...". Adems, por favor,
incluya en la respuesta slo aquellas partes del mensaje
a las que est respondiendo.
Asuntos del da:
1. Re: correr modelos no lineales (Roy Vera)
2. Re: correr modelos no lineales (Jorge I Velez)
3. Re: Grfico con varias variables (Carlos Ortega)
4. Re: Grfico con varias variables (M. Monsalvo)
------------------------------------------------------------------
62 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Leer las ayudas de R es otra fuente de conocimientos que redita. No deje nunca de consultar y
aun de practicar los ejemplos propuestos, haciendo un copy y paste en la consola, ya que ver
como funcionan las cosas ayuda a su comprensin.
En las prximas pginas vamos a abordar un proyecto sencillo, con la idea que se familiarice con el
entorno y su manejo. No se preocupe si no comprende los comandos. Los conceptos son ms
importantes.
a. Pasos del proyecto
El siguiente trabajo es un ejemplo de la metodologa que aplicaremos, los resultados en este caso
son irrelevantes por cuanto es simplemente un ejercicio, una prueba de concepto.
Caso: tenemos una lista de los 100 apellidos mas usuales en Argentina, deseamos ver que
grado de cercanas hay entre ellos, y como agruparan en un clster imprimiendo una
salida en un dendograma.
Materiales: apellidos.csv
34
Procedimientos: Preparacin del espacio del proyecto, adjuntar archivos de datos al
espacio, instalar y carga de libreras si fueran necesarias, importacin de datos del CSV,
transformacin de los datos aplicando distancias y procesndola finalmente en
clsteres, impresin del dendograma resultante.
b. fuente de datos
El CSV es un archivo de texto plano en el que hay dos columnas por cien filas, con campos
separados por comas simples, aqu copiamos en una tabla que usted puede copiar y pegar en un
bloc de notas
35
en una sola columna doble de 100 filas:
Gonzalez, 568.240
Rodriguez, 483.212
Gomez, 426.253
Fernandez, 411.462
Lopez, 393.704
Diaz, 346.271
Martinez, 336.094
Perez, 294.527
Garcia, 290.821
Sanchez, 271.351
Romero, 256.397
Sosa, 187.974
alvarez, 173.055
Torres, 166.497
Ruiz, 160.483
Ramirez, 154.248
Flores, 140.829
Acosta, 135.893
Benitez, 133.599
Medina, 132.625
Suarez, 130.607
Herrera ,129.372
Gimenez ,123.938
Molina ,119.674
Silva ,118.825
Castro ,118.106
Rojas ,116.775
Ortiz ,107.835
Nunez ,104.668
Luna ,104.581
Juarez ,100.092
Cabrera, 99.884
Rios ,98.761
Ferreyra, 96.761
Godoy ,96.228
Morales ,95.628
Dominguez, 94.781
Moreno, 94.537
Peralta, 92.707
Vega ,92.127
Carrizo ,91.365
Quiroga, 89.583
Castillo ,88.398
Ledesma, 88.394
Vera ,79.882
Vazquez ,75.365
Villalba, 74.107
Cardozo, 73.932
Navarro, 73.907
Ramos ,73.458
Arias ,71.587
Coronel ,71.534
Cordoba, 70.713
Figueroa, 70.092
Correa ,70.055
Caceres, 69.720
Vargas, 69.447
Maldonado, 68.510
Mansilla, 66.763
Farias, 66.535
Rivero, 66.461
Paz ,66.457
Miranda ,66.138
Roldan, 65.375
Mendez ,63.575
Lucero ,63.367
Paez, 60.580
Blanco, 59.333
Mendoza, 58.956
Barrios, 58.811
Escobar, 58.604
avila ,57.990
Soria ,57.192
Leiva ,55.633
Acuna, 55.515
Martin ,55.310
Maidana, 54.806
Moyano ,54.009
Campos, 52.282
Olivera ,51.972
Duarte, 51.493
Soto ,50.657
Franco, 50.613
Bravo, 50.588
Valdez, 49.717
Toledo, 49.645
Andrada-Andrade, 49.543
Montenegro, 49.291
34
Extrado del INDEC
35
Recomendamos calurosamente el Notepad++ (va por la versin 6) el preferido por los programadores.
63 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Aguirre ,126.822
Pereyra ,125.009
Gutierrez, 124.550
Munoz ,81.343
Ojeda, 80.233
Ponce, 80.050
Cruz, 63.226
Hernandez, 63.157
Aguero ,62.727
Leguizamon ,48.602
Chavez ,48.355
Arce, 47.344
Es importante que no agregue ni quite nada, por eso se debe usar el bloc de notas y no otros
programas que agregan marcas ocultas de formato. Este archivo lo debe guardar como
apellidos.csv; la extensin CSV tambin es importante. Tambin debe eliminar los caracteres
acentuados, ya que suelen presentar problemas cuando estn presentes.
c. Iniciamos el proyecto
Al iniciar Rstudio limpio (sin variables ni historial cargado) vamos al tem Proyecto en Men y
seleccionamos la opcin de nuevo proyecto, si ya tuviese uno activo puede abrirlo en open
Project o echar un vistazo en Recent Projects para ver el listado de proyectos anteriores.
Como estamos haciendo un proyecto de R desde cero
es de suponer que no tenemos aun nada en la lista de
recientes. Al pulsar "New Project nos aparece la
ventana de seleccin de nuevo directorio, directorio
existente y control de versin de proyecto.
Nuevo directorio permite crear el sitio
especifico para este proyecto
Abrir uno existente es la segunda opcin
Control de versin es una herramienta para
chequear que los archivos que hemos creado colaborativamente (y almacenados en algn
lugar de la web) estn actualizados.
Seleccionamos la primera opcin y completamos los datos requeridos. Esto creara una carpeta
Apellidos con un archivo apellidos.r que contendr el workspace y otra informacin relevante
64 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
adjunta. Cada vez que salgamos se guardaran los datos en dicho lugar, adems de poder llamar a
todos los elementos desde proyectos recientes.
Quizs parezca trivial, pero a la hora de revisar y cargar los scripts adems de variables y espacio
de trabajo es realmente muy til, especialmente si llevamos varios proyectos paralelamente.
Si tenemos el archivo de datos apellidos.csv lo guardamos en dicha carpeta, donde
inmediatamente aparecer en el panel de files (archivos). As estar disponible para cuando
configuremos el script y la ruta de aplicacin para su lectura.
d. A escribir se ha dicho
Es inevitable, esta es la hora de escribir cdigo. Para
evitar que aumente significativamente la tasa de
suicidios, comentaremos el mismo en rojo, estas
explicaciones tienen por objeto familiarizarse con el
cdigo y su escritura.
#==================================================
# Dendogr ama con apel l i dos, una pr ueba
#==================================================
# Fi l e- Name: apel l i dos. R
# Dat e: 04/ 10/ 2012
# Aut hor : Edwi n Agui ar - I NTA TI Cs
Cor r i ent es Desar r ol l o y Bases de Dat os
# Emai l : eagui ar @cor r eo. i nt a. gov. ar
# Dat a: dat os de l a web ( I NDEC)
#==================================================
# NO conf i gur amos por que el pr oyect o ya l o hi zo y
# no per mi t i r l a i nst r ucci n, dando er r or :
set wd( "apel l i dos")
# obt enemos l a mat r i z 100*3 apel l i dos
apel l i dos <- r ead. csv( "apel l i dos. csv", header =F)
# si desea ver l a t abl a apel l i dos, descoment e:
#Vi ew( apel l i dos)
# cr eamos el ar r ay de apel l i dos y de val or es
nombr es<- as. ar r ay( apel l i dos$V1)
ci f r as<- as. ar r ay( apel l i dos$V2)
#==================================================
# DI STANCI AS, CLUSTERI NG y PLOTEOS: HCLUST=COMPLETE
#==================================================
Nota 14
Sea el alma de las fiestas!
-Yo uso R con Rstudio, y trabajo en el INTA-
-Csate conmigo!-
..
En poco tiempo es posible hacer
trabajos interesantes y presumir ante
sus amistades ensendoles estas
incomprensibles cosas; pero tenga en
cuenta que para que todo funcione
segn sus expectativas depender de
sus conocimientos de la materia
(estadstica o minera de datos) y no de
la magia negra o el poder de las
pirmides!
65 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
# Di st anci as y met odos: ver not a mas abaj o
di st anci as1<- di st ( apel l i dos, met hod="manhat t an")
# agr upami ent o: cl ust er , cr ea el mapa de l as di st anci as
cl ust er <- hcl ust ( di st anci as1)
#i mpr i me el r esul t ado en una gr af i ca
pl ot ( cl ust er , mai n="Met odo Manhat an", l abel s=nombr es)
el gr af i co r esul t ant e:
Una depur aci n del cdi go par a gr af i car :
66 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Cdi go agr egado:
hc<- hcl ust ( di st ( apel l i dos, "manhat t an") )
pl ot ( hc, hang=- 1) , l abel s=nombr es)
pl ot ( hc, hang=- 2) , l abel s=nombr es)
r ect . hcl ust ( hc, 3, bor der ="gr een")
r ect . hcl ust ( hc, 5, bor der ="r ed")
r ect . hcl ust ( hc, 10, bor der ="bl ue")
Como se advierte en la segunda parte del cdigo (la modificacin) la inclusin de unas lneas mas
crean cajas de colores para agrupamientos de 3,5 y 10 grupos. La aplicacin de distancias y
clsteres se ha hecho en una sola lnea, comprimiendo el cdigo anterior. Esto demuestra la
potencia de R que permite concatenar funciones de manera muy eficiente y sencilla.
e. Distancias:
Es la cuantificacin del grado de proximidad entre dos o ms puntos en un espacio de dimensin
{d} que tradicionalmente en matemticas se ha asociado al concepto de mtrica o distancias.
Una mtrica es una funcin que a cada par de puntos x,y R
d
(x e y pertenecen al conjunto de
nmeros reales) les asocia un valor positivo de modo que cuando mayor es, mas distantes son.
La funcin definida en el espacio producto R
d
x R
d
debe verificar algunos axiomas para decir
que es una mtrica:
No negativa d(x,y)0
Un punto dista 0 de si mismo d(x,y)=0
Simetra d(x,y) = d(y,x)
Desigualdad triangular d(x,z) d(x,y) + d(y,z)
El agrupamiento es una cualificacin de ese grado de proximidad, es juntar con un criterio
determinado (existen varios tipos de clsteres) que abarcan distintos tipos de conceptos (single,
completo, Ward etc)
f. Conclusiones del dendograma
Mas all de la veracidad de las conclusiones (que los Gonzales y los Rodrguez forman un poderoso
agrupamiento de primer nivel con un peso preponderante; por lo que no aconsejamos disputar con
miembros de tales familias) podemos apreciar la simpleza de trabajo en R y como con unas pocas
funciones es posible realizar un trabajo mas complejo y serio; que posteriormente la investigacin
comprobara hiptesis y establecer como valedera.
g. Guardando grficos
Ahora que hemos realizado el script, sin fallos, que la
salida grafica ha sido creada, debemos guardar el grafico.
En el panel de Plots (graficas) podemos seleccionar la
opcin export y guardarla en una variedad de formatos
67 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
grficos usuales. Tambin en dicha ventana podemos seleccionar que dimensin tendr (recordar
marcar que conserve la proporcin la imagen) y elegir el directorio en el cual guardara la imagen.
Esta le servir para incluir en sus trabajos de investigacin, junto con las tablas que genere (que
deber tambin guardar o copiar y pegar en un documento que este redactando).
En la prxima imagen podemos apreciar el proceso completo de guardar grficos:
Los formatos: PNG, JPEG, TIFF, BMP, METAFILE, SVG y PS adems de PDF son fcilmente
insertables en documentos de plataformas Linux, Windows y Apple.
h. Finalizando el proyecto
Cuando termine el proyecto en Rstudio no olvide guardar el script (icono de disquete en la parte
superior izquierda de la ventana de script) y salvar el workspace. De todas maneras al salir le
preguntara Rstudio si desea salvar el espacio de trabajo.
Una buena prctica es cada tanto, e independientemente del estado de su proyecto, gurdelo.
Otra buena prctica es disponer de un repositorio en la red en donde colgar sus
proyectos, o al menos sus scripts. Si posee cuenta en Gmail hay una aplicacin
llamada Drive que permite crear carpetas y compartirlas en distinto grado (solo
lectura, edicin) con otros, e incluso a usted mismo si no esta en su pc o no puede acceder al
Rstudio-Server por no estar pblicamente disponible fuera de su red. Si su institucin posee un
server de Sharepoint tambin podr resolver el almacenamiento de sus scripts e imgenes para
tenerlas accesibles desde cualquier lado, y eventualmente dar permisos para acceso o edicin a
terceros.
68 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Libreras en Rstudio
Cuando corrimos el ejemplo anterior habr notado que se requiere la librera RODBC. En R y
Rstudio por defecto hay una serie de librera que ya vienen precargadas, pero no son la totalidad
de las mismas, pues cada tanto se actualiza las existentes y se agregan nuevas que extienden el
alcance de R en otras reas.
En este breve aparte vamos a comentar
como seleccionar un repositorio y como
cargar las libreras que usted requiera
para su trabajo.
1. Las libreras precargadas
Estas libreras bsicas que ya vienen
implcitas en la instalacin de R mas la
del RStudio (recuerde que para correr
Rstudio debe primero instalar R en su
sistema) son las siguientes:
Base, Boot, Class, Cluster, Codetools,
Compiler,Datasets, Foreign, Graphics,
GrDevice, Grid, KernSmooth, Lattice,
Mass, Matrix, Methods, Mgcv, Nlme,
Nnet, Parallel, Rpart, Spatial, Splines,
Stats, Survival, Tcltk, Tools, Utils
Dichas libreras consisten en el Corazn
del sistema, herramientas estadsticas y
matemticas, tratamiento de grficos,
de matrices etc. Podr ver la
descripcin detallada de cada una en el
help de Rstudio o en la ventana de
packages; seleccione el link de una
librera de su inters y podr leer la
documentacin sobre la misma
Sin embargo cuando estamos
trabajando a menudo requerimos de
libreras que tenemos en el sistema
pero que no estn cargadas en el script.
Para hacerlo solo basta con sealarlas en el casillero de la lista de packages. En la primera imagen
hemos marcado dos libreras para que se carguen en el script de nuestro trabajo:
69 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Datasets
Graphics
Al marcarlas, se incorporan al script
copindolas de la consola de comandos
(donde queda registrada la preferencia)
y pegndola en la lnea 10, debajo del
encabezado del script, en la primera
lnea activa. Quedara as:
#====================================
# Dendogr ama con apel l i dos, una
# pr ueba de concept o
#====================================
# Fi l e- Name: apel l i dos. R
# Dat e: 04/ 10/ 2012
# Aut hor : Edwi n Agui ar - I NTA
# TI Cs Cor r i ent es Desar r ol l o y Bases
# de Dat os
#====================================
l i br ar y( "dat aset s") ; # l i neas copi adas de l a consol a
l i br ar y( "gr aphi cs") ; # y pegadas en el scr i pt
#conf i gur amos donde
set wd( "D: / mapas/ apel l i dos/ ") ;
# obt enemos l a mat r i z 100*3 apel l i dos
apel l i dos <- r ead. csv( "D: / mapas/ apel l i dos/ apel l i dos. csv", header =F) ;
#Vi ew( apel l i dos)
# ar r ay de nombr es de apel l i dos
nombr es<- as. ar r ay( apel l i dos$V1) ;
ci f r as<- as. ar r ay( apel l i dos$V2) ;
Por supuesto puede (si ya maneja el cdigo de R) escribirlo directamente en el script, e
incluso no hacerlo ya que al sealar la librera en packages quedara guardada la
preferencia en el workspace por defecto. Pero si usted enva el script a u tercero o lo
corre en otra maquina que no contenga su espacio de trabajo, saltara el error de faltante de la
librera en un mensaje en el que le avisa que no reconoce alguna funcin.
Si desea eliminar una librera que no necesite, solo desmrquela de packages (y escriba en el
script de R: det ach( " package: dat aset s" ) , por ejemplo)
2. Librera que no estn cargadas ni instaladas
Es altamente probable que intente hacer algo que requiera librerias adicionales, por ejemplo leer
archivos de Excel 2007-2010; y nada en lo que tenga instalado puede hacerlo porque necesita una
librera faltante: xlsx. Por mas que mire y remire el panel de packages no hay nada
remotamente parecido a esto, no queda ms salida que descargar e instalar el paquete desde un
repositorio
36
36
Un servidor de internet que posee estos paquetes para su descarga
70 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Hay dos formas de realizar esto: la usual es desde la consola y la segunda es mediante la
interfaz grafica (ms sencilla).
El cdigo y salida de consola para esta descarga e instalacin:
> i nst al l . packages( "xl sx") # or den par a l a descar ga e i nst al aci on
I nst al l i ng package( s) i nt o D: / Usuar i o/ Document s/ R/ wi n- l i br ar y/ 2. 14
( as l i b i s unspeci f i ed)
al so i nst al l i ng t he dependenci es xl sxj ar s , r J ava
pr obando l a URL
' ht t p: / / mi r r or . f cagl p. unl p. edu. ar / CRAN/ bi n/ wi ndows/ cont r i b/ 2. 14/ xl sxj ar s_0. 4. 0. zi p'
Cont ent t ype ' appl i cat i on/ zi p' l engt h 9041528 byt es ( 8. 6 Mb)
URL abi er t a
downl oaded 8. 6 Mb
pr obando l a URL ' ht t p: / / mi r r or . f cagl p. unl p. edu. ar / CRAN/ bi n/ wi ndows/ cont r i b/ 2. 14/ r J ava_0. 9-
3. zi p'
Cont ent t ype ' appl i cat i on/ zi p' l engt h 745867 byt es ( 728 Kb)
URL abi er t a
downl oaded 728 Kb
pr obando l a URL
' ht t p: / / mi r r or . f cagl p. unl p. edu. ar / CRAN/ bi n/ wi ndows/ cont r i b/ 2. 14/ xl sx_0. 5. 0. zi p'
Cont ent t ype ' appl i cat i on/ zi p' l engt h 381977 byt es ( 373 Kb)
URL abi er t a
downl oaded 373 Kb
package xl sxj ar s successf ul l y unpacked and MD5 sums checked
package r J ava successf ul l y unpacked and MD5 sums checked
package xl sx successf ul l y unpacked and MD5 sums checked
The downl oaded packages ar e i n
C: \ User s\ Usuar i o\ AppDat a\ Local \ Temp\ Rt mpoP2Dhw\ downl oaded_packages
Lo que esta en azul es la salida del programa que ubica
el paquete xlsx, las dependencias (otras libreras que
se requieren para complementar el funcionamiento) y
las descarga desde un mirror (un servidor que replica
los paquetes desde el server principal de R). Una vez
que ha descargado las libreras requeridas, las
descomprime e instala.
La descarga e instalacin mediante la interfaz grafica
es ms simple aun. En el panel de packages solo hay
que seleccionar la pestana install elegir repositorio, comenzar a escribir el nombre (a medida
que lo haga irn apareciendo las sugerencias de libreras) y pulsa install. El resto es similar a la
instalacin de consola, que enseara como van sucediendo los pasos y el resultado final.
3. Y si no tengo internet?
Busque en el repositorio de R en internet, all seleccione la librera para descargar (en Windows o
en Linux) y posteriormente llvela a su Rstudio en su maquina fuera de red e instlelo desde la
71 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
primer opcin de la ventana Install packages de la
imagen superior, instalar desde archivos ZIP. Le
pedir la ruta de acceso al archivo.
4. Repositorios de R
Los repositorios son los servidores que replican los
paquetes y programas de R en todo el mundo, para
seleccionar uno de su preferencia solo debe ir a
Tools seleccionar Options y de la pestaa
principal hallara una caja de texto CRAN mirror
para seleccionar de la lista de servidores.
La lista completa al dia de la fecha de redaccin de
este manual es la siguiente:
0-Cloud
http://cran.rstudio.com/ Rstudio, automatic redirection to servers worldwide
Argentina
http://mirror.fcaglp.unlp.edu.ar/CRAN/ Universidad Nacional de La Plata
http://r.mirror.mendoza-conicet.gob.ar/ CONICET Mendoza
Australia
http://cran.csiro.au/ CSIRO
http://cran.ms.unimelb.edu.au/ University of Melbourne
Austria
http://cran.at.r-project.org/ Wirtschaftsuniversitaet Wien
Belgium
http://www.freestatistics.org/cran/ K.U.Leuven Association
Brazil
http://cran-r.c3sl.ufpr.br/ Universidade Federal do Parana
http://cran.fiocruz.br/ Oswaldo Cruz Foundation, Rio de Janeiro
http://www.vps.fmvz.usp.br/CRAN/ University of Sao Paulo, Sao Paulo
http://brieger.esalq.usp.br/CRAN/ University of Sao Paulo, Piracicaba
Canada
http://cran.stat.sfu.ca/ Simon Fraser University, Burnaby
http://mirror.its.dal.ca/cran/ Dalhousie University, Halifax
http://probability.ca/cran/ University of Toronto
http://cran.skazkaforyou.com/ iWeb, Montreal
http://cran.parentingamerica.com/ iWeb, Montreal
Chile
http://dirichlet.mat.puc.cl/ Pontificia Universidad Catolica de Chile, Santiago
China
http://ftp.ctex.org/mirrors/CRAN/ CTEX.ORG
http://cran.csdb.cn/ Computer Network Information Center, CAS, Beijing
http://mirror.bjtu.edu.cn/cran Beijing Jiaotong University, Beijing
http://cran.dataguru.cn Dataguru (a, Guangzhou)
http://mirrors.ustc.edu.cn/CRAN/ University of Science and Technology of China
http://mirrors.xmu.edu.cn/CRAN/ Xiamen University
Colombia
http://www.laqee.unal.edu.co/CRAN/ National University of Colombia
Nota 10
Donde descargar libreras de R
Las posee a disposicin en http://cran.r-
project.org/ en la pestaa packages,
all encontrara la lista ordenada por
nombres
http://cran.r-
project.org/web/packages/available_packag
es_by_name.html
o por fecha de actualizacin.
http://cran.r-
project.org/web/packages/available_packag
es_by_date.html
72 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
http://www.icesi.edu.co/CRAN/ Icesi University
Denmark
http://mirrors.dotsrc.org/cran/ dotsrc.org, Aalborg
Ecuador
http://cran.espol.edu.ec/ Escuela Superior Politecnica del Litoral
France
http://cran.univ-lyon1.fr/ Dept. of Biometry & Evol. Biology, University of Lyon
http://mirror.ibcp.fr/pub/CRAN/ CNRS IBCP, Lyon
http://ftp.igh.cnrs.fr/pub/CRAN/ Institut de Genetique Humaine, Montpellier
Germany
http://mirrors.softliste.de/cran/ Softliste.de, Berlin
http://mirror.layerjet.com/cran layerjet.com
http://ftp5.gwdg.de/pub/misc/cran/ GWDG Goettingen
Greece
http://cran.cc.uoc.gr/ University of Crete
Hungary
http://cran.rapporter.net/ Rapporter.net, Budapest
India
http://ftp.iitm.ac.in/cran/ Indian Institute of Technology Madras
Indonesia
http://cran.repo.bppt.go.id/ Agency for The Application and Assessment of Technology
Iran
http://cran.um.ac.ir/ Ferdowsi University of Mashhad
Ireland
http://ftp.heanet.ie/mirrors/cran.r-project.org/ HEAnet, Dublin
Italy
http://cran.mirror.garr.it/mirrors/CRAN/ Garr Mirror, Milano
http://cran.stat.unipd.it/ University of Padua
http://dssm.unipa.it/CRAN/ Universita degli Studi di Palermo
Japan
http://essrc.hyogo-u.ac.jp/cran/ Hyogo University of Teacher Education
http://cran.md.tsukuba.ac.jp/ University of Tsukuba
http://cran.ism.ac.jp/ Institute of Statistical Mathematics, Tokyo
Korea
http://cran.nexr.com/ NexR Cortporation, Seoul
Latvia
http://mirrors.webhostinggeeks.com/cran/ Webhostinggeeks
Mexico
http://cran.itam.mx/ Instituto Tecnologico Autonomo de Mexico
http://www.est.colpos.mx/R-mirror/ Colegio de Postgraduados, Texcoco
Netherlands
http://cran.xl-mirror.nl/ XL-Data, Amsterdam
http://cran-mirror.cs.uu.nl/ Utrecht University
New Zealand
http://cran.stat.auckland.ac.nz/ University of Auckland
Norway
http://cran.uib.no/ University of Bergen
Philippines
http://cran.stat.upd.edu.ph/ University of the Philippines and PREGINET
Poland
http://r.meteo.uni.wroc.pl/ University of Wroclaw
Russia
http://cran.gis-lab.info/ GIS-Lab.info
Singapore
http://cran.stat.nus.edu.sg/ National University of Singapore
Slovakia
http://cran.fyxm.net/ FYXM.net, Bratislava
73 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
South Africa
http://cran.mirror.ac.za TENET, Johannesburg
Spain
http://cran.es.r-project.org/ Spanish National Research Network, Madrid
Sweden
http://ftp.sunet.se/pub/lang/CRAN/ Swedish University Computer Network, Uppsala
Switzerland
http://stat.ethz.ch/CRAN/ ETH Zuerich
Taiwan
http://cran.cs.pu.edu.tw/ Providence University, Taichung
http://cran.csie.ntu.edu.tw/ National Taiwan University, Taipei
Thailand
http://mirrors.psu.ac.th/pub/cran/ Prince of Songkla University, Hatyai
UK
http://www.stats.bris.ac.uk/R/ University of Bristol
http://cran.ma.imperial.ac.uk/ Imperial College London
http://star-www.st-andrews.ac.uk/cran/ St Andrews University
USA
http://cran.cnr.Berkeley.edu University of California, Berkeley, CA
http://cran.stat.ucla.edu/ University of California, Los Angeles, CA
http://streaming.stat.iastate.edu/CRAN/ Iowa State University, Ames, IA
http://ftp.ussg.iu.edu/CRAN/ Indiana University
http://rweb.quant.ku.edu/cran/ University of Kansas, Lawrence, KS
http://watson.nci.nih.gov/cran_mirror/ National Cancer Institute, Bethesda, MD
http://cran.mtu.edu/ Michigan Technological University, Houghton, MI
http://cran.wustl.edu/ Washington University, St. Louis, MO
http://cran.case.edu/ Case Western Reserve University, Cleveland, OH
http://ftp.osuosl.org/pub/cran/ Oregon State University
http://lib.stat.cmu.edu/R/CRAN/ Statlib, Carnegie Mellon University, Pittsburgh, PA
http://cran.mirrors.hoobly.com Hoobly Classifieds, Pittsburgh, PA
http://mirrors.nics.utk.edu/cran/ National Institute for Computational Sciences, Oak Ridge, TN
http://cran.revolutionanalytics.com Revolution Analytics, Dallas, TX
http://cran.fhcrc.org/ Fred Hutchinson Cancer Research Center, Seattle, WA
http://cran.cs.wwu.edu/ Western Washington University, Bellingham, WA
Venezuela
http://camoruco.ing.uc.edu.ve/cran/ Universidad de Carabobo Venezuela
Vietnam
http://cran.vinastat.com/ VinaStat.com
Graficas con R y Rstudio
Las funciones graficas en R existen a varios niveles, de los mas simples a los mas complejos. La
variedad nacida de la necesidad de presentar los datos- hacen que existan varios tipos de
graficacin adecuados para cada caso. La importancia de la presentacin visual de los datos
mediante una representacin visual es definida como:
En comparacin con otras formas de presentacin de los datos, los grficos nos permiten,
de una mirada, comprender el comportamiento de los datos, aun de datos muy complejos,
por lo tanto ahorran tiempo al analista de informacin. Los grficos estadsticos nos
permiten usar nuestra habilidad para visualmente procesar informacin de un grafico. Esto
74 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
nos permite hacer juicios respecto a la variabilidad, escala, patrones y tendencias de los
datos.
37
Los grficos que podemos trazar se pueden dividir a priori en la representacin de la cantidad de
dimensiones que representan. Suponiendo hasta tres, tendramos una lista que abarcan las
distintas funciones, a su vez divididas en funciones de graficacin de bajo nivel y de alto nivel; esto
son las graficaciones sobre una nueva imagen o sobre una existente. No es un calificador de
calidades como podra suponerse ligeramente.
La forma de trabajo de las funciones graficas es sustancialmente diferente al de las funciones, que
trabajan en base a lo que se llaman objetos (tablas, matrices, vectores, dataframes etc).El
resultado de una funcin grafica no puede ser asignado a un objeto sino que es enviado a un
dispositivo grafico. Un dispositivo grafico es una ventana grafica o un archivo, y de all la salida
visual que obtenemos.
a. ndice de algunas funciones graficadoras
Listado de algunas funciones graficadoras y parmetros usuales de configuracion
Grficos Unidimensionales
barplot(Estaturas)
barplot(Estaturas, amplitud, nombres, space=.2, inside=TRUE, beside= FALSE, horiz=FALSE,
legend, angle, density, col, blocks=TRUE)
boxplot(..., rango, amplitud, varwidth=FALSE, notch=FALSE, names, plot=TRUE)
hist(x, nclass, breaks, plot=TRUE, angle, density, col, inside)
Grficos Bidimensionales
lines(x, y, type=l)
pie (antes piechart)
points(x, y, type=p))
plot(x, y, type=p, lty=1:5, pch=, col=1:4)
points(x, y, type=p, lty=1:5, pch=, col=1:4)
lines(x, y, type=l, lty=1:5, pch=, col=1:4)
plot(x, y, type=p, log=)
abline(coef)
abline(a, b)
abline(reg)
abline(h=)
abline(v=)
qqplot(x, y, plot=TRUE)
qqnorm(x, datax=FALSE, plot=TRUE)
37
Grficos estadsticos con R Juan Carlos Correa y Nelfi Gonzlez, Posgrado en Estadstica Universidad Nacional-Sede Medelln
([email protected]), 2002
75 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Grficos Tridimensionales
contour(x, y, z, v, nint=5, add=FALSE, labels)
interp(x, y, z, xo, yo, ncp=0, extrap=FALSE)
persp(z, eye=c(-6,-8,5), ar=1)
Realicemos algn ejemplo para probar los conceptos.
Barplot es un grafico de barras
> dat os<- c( r nor m( 10, 30, 10) ) # gener amos nmer os al eat or i os
> dat os # exami namos l os nmer os
# cr eados
[ 1] 48. 78488 25. 55557 39. 02275 26. 56289 45. 80036
27. 04644 35. 77342 24. 97891 11. 06760 24. 73588
> bar pl ot ( dat os) # i mpr i mi mos l as bar r as
Otro barplot
> ampl i t ud<- c( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
> nombr es<- c( "uno", "dos", "t r es", "cuat r o", "ci nco", "sei s",
"si et e", "ocho", "nueve", "di ez", "once")
> est at ur as<- c( r ound( r nor m( 10, 1, 2) ) , di gi t s=2)
> bar pl ot ( est at ur as, ampl i t ud, nombr es, space=. 2)
Estas funciones suelen tener muchos parmetros interesantes, es adecuado leer cuidadosamente
las ayudas del Rstudio, por ejemplo agregando el parmetro de color en forma de un vector:
col = c( "l i ght bl ue", "mi st yr ose", "l i ght cyan", "l avender ", "cor nsi l k") ,
Pie: grficos de torta.
> pi e( dat os)
> pi e( dat os, l abel s= r ound( dat os, 2) , mai n="Dat os sobr e Pat os")
76 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Un ultimo ejemplo de barplot:
bar pl ot ( hei ght = cbi nd( x = c( 465, 91) / 465 * 100,
y = c( 840, 200) / 840 * 100,
z = c( 37, 17) / 37 * 100) ,
besi de = FALSE,
wi dt h = c( 465, 840, 37) ,
col = c( 1, 2) ,
l egend. t ext = c( "A", "B") ,
ar gs. l egend = l i st ( x = "t opl ef t ") )
Boxplot: dos ejemplos
> est at ur as
di gi t s
- 2 0 5 - 1 - 2
- 2 2 - 3 4 2 2
> ot r acosa<- 1/ est at ur as+3
> ot r acosa
di gi t s
2. 50 - I nf 3. 20 2. 00 2. 50 2. 50
3. 50 2. 66 3. 25 3. 50 3. 50
> boxpl ot ( est at ur as, 3, ot r acosa)
boxpl ot ( l en ~ dose, dat a = Toot hGr owt h,
boxwex = 0. 25, at = 1: 3 - 0. 2,
subset = supp == "VC", col =
"yel l ow",
mai n = "Gui nea Pi gs' Toot h
Gr owt h",
xl ab = "Vi t ami n C dose mg",
yl ab = "t oot h l engt h",
xl i m= c( 0. 5, 3. 5) , yl i m= c( 0,
35) , yaxs = "i ")
Histogramas, dos ejemplos:
> est at ur as
di gi t s
- 2 0 5 - 1 - 2
- 2 2 - 3 4 2 2
> hi st ( est at ur as, col = c( "l i ght bl ue",
"mi st yr ose", "l i ght cyan", "l avender ",
"cor nsi l k") )
hi st ( est at ur as, f r eq = FALSE, yl i m= c( 0,
0. 2) , col = c( "l i ght bl ue", "mi st yr ose",
"l i ght cyan", "l avender ", "cor nsi l k") )
> cur ve( dchi sq( x, df = 4) , col = 2, l t y = 2,
l wd = 2, add = TRUE)
77 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Lines: utilizando lneas en conjunto con plots
lines dibuja lneas sobre una serie de puntos graficados (plot), el ejemplo del uso es el
siguiente:
> i ndi ce<- c( 1: 11) # cr ea el vect or x de 1 a 11
> pl ot ( est at ur as, mai n="Est at ur as") # si t ua l os punt os pl ot en l a gr af i ca
> l i nes( i ndi ce, est at ur as) # t r aza l a l nea que une a l os punt os
pl ot ( est at ur as, mai n="Est at ur as", t ype="o", col =2, pch=16)
En la lnea superior le damos al tipo de lnea el parmetro o (overploted), color rojo y puntos
peach el valor 16. El resultado es el de abajo, sin usar la segunda instruccin de lines
cdigos numricos de pch
78 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Points (puntos) trabaja sobre el eje de coordenadas que provee plot:
> pl ot ( - 4: 4, - 4: 4, t ype = "n") # cr ea ej e de coor denadas - 4 a +4
> poi nt s( r nor m( 200) , r nor m( 200) , col = "r ed", pch=19) # punt os r oj os r edondos
> poi nt s( r nor m( 100) / 2, r nor m( 100) / 2, col = "bl ue", cex = 1. 5, pch=3) # punt os azul es cr uces
El tipo n en plot significa que no escribir ningn grafico, solo crea el eje de coordenadas. La
funcin rnorm crea una secuencia aleatoria de una distribucin normal, para generar los puntos y
sus dos coordenadas (x,y)
Ablines: agregando lneas a los grficos
> sal e5 <- c( 6, 4, 9, 7, 6, 12, 8, 10, 9, 13)
> pl ot ( sal e5, pch="x")
> abl i ne( l sf i t ( 1: 10, sal e5) )
> abl i ne( l sf i t ( 1: 10, sal e5, i nt er cept = FALSE) , col = 4)
En la imagen del grafico tenemos
una primera instancia que es la
creacin de los puntos (plot) y
una segunda en la que se crean
dos rectas que trazan otras
funciones.
Lsfit() es la estimacin de
mnimos cuadrados
38
de los
datos del vector sales5 En la
segunda lsfit() se ha configurado
un termino de intercepcin como FALSO, mientras que en la primera es VERDADERA por defecto.
Los datos y el cdigo son el ejemplo de la ayuda de R.
38
Mnimos cuadrados es una tcnica de anlisis numrico encuadrada dentro de la optimizacin matemtica, en la que, dados un
conjunto de pares ordenados: (variable independiente, variable dependiente) y una familia de funciones, se intenta encontrar la
funcin, dentro de dicha familia, que mejor se aproxime a los datos (un "mejor ajuste"), de acuerdo con el criterio de mnimo error
cuadrtico.
79 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
qqplot y qnorm son dos funciones que plotean la primera los cuartiles de una distribucin T de
Studen y la segunda los cuartiles de una distribucin normal.
b. Las distribuciones en 3D
Dada la complejidad de la materia, a la que apenas hemos araado en la superficie aun en los
ejemplos mas sencillos, se puede profundizar en R graphics" de Paul Murrell , que se encuentra
en http://www.stat.auckland.ac.nz/~paul/RGraphics/rgraphics.html para su descarga gratuita y
que hemos utilizado en parte aqu para demostraciones conceptuales.
c. aspectos generales sobre grficos
La mayora de las funciones de graficacin poseen en comn estos parmetros, que se pueden
probar con plot, pie, barplot etc.
log=<xjyjxy> Ejes Logartmicos
main=ttulo titulo del grafico
new=<logical> Adiciona sobre el grafico actual
sub=ttulo de abajo titulo inferior
type=<ljpjbjn> Lnea, puntos, ambos, ninguno
lty=n Tipo de Lnea
pch=. Carcter de dibujo
xlab=Nombre del eje x etiqueta del eje X
ylab=Nombre del eje y etiqueta del eje Y
xlim=c(xminimo; xmaximo) valores de escala x
ylim=c(yminimo; ymaximo) valores de escala y
col=n color, en escala de nmeros o en ingles
lwd=n ancho de lnea de trazo en nmeros
d. Ejemplo de uso con plot()
pl ot ( var i abl e, t ype="b",
yl i m=c( 13, 29) , xl ab="casos",
yl ab="ocur r enci as", mai n="Casos
vs Ocur r enci as", col ="bl ue",
l t y=2, l wd=1)
80 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
e. Uso de barplot()
bar pl ot ( var i abl e,
yl i m=c( 10, 29) , xl ab="casos",
yl ab="ocur r enci as", mai n="Casos
vs Ocur r enci as", bor der =2,
col ="gr ay", densi t y=8)
f. Realizar varias graficas en una sola
Es posible crear varias graficas en una sola dividiendo en una matriz, que en
ejemplo hemos llamado mat4, en donde los parmetros son los siguientes:
Numero de pantallas
Cargamos dichas pantallas al dispositivo de salida (la salida grafica
del pc) con layout()
Exhibimos con la funcin layout.show()
Si deseramos crear una matriz de tres o cinco paneles en la
pantalla podramos hacer:
Mat 3<- mat r i x( c( 1: 3, 3) , 2, 2)
l ayout ( mat 3)
l ayout . show( 3)
mat 5<- mat r i x( c( 1: 5, 5) , 3, 2)
l ayout ( mat 5)
l ayout . show( 5
Dependiendo de sus necesidades para exponer los datos
visualmente. El nmero adicional a la secuencia de la matriz es
el elemento extra (impar) y los dos parmetros siguientes son
columna y fila respectivamente. Tambin es posible que pueda modificar el ancho y largo de las
columnas o filas utilizando widths y heigths como parmetros de layout(), lo cual aconsejamos lea
en la ayuda de R.
Mat 4<- mat r i x( 1: 4, 2, 2) ;
Mat 4;
[ , 1] [ , 2]
[ 1, ] 1 3
[ 2, ] 2 4
l ayout ( mat 4) ;
l ayout . show( 4) ;
81 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
g. Parmetros adicionales a los grficos
Ademas de lo que hemos visto es posible agregar mas parmetros adicionales a los graficos, como
por ejemplo darle color de fondo (background= bg):
par ( bg="yel l ow")
pl ot ( mat 5)
La lista de varios de esos parmetros adicionales es la
siguiente
39
:
h. Ejemplo de graficacin bidimensional
40
En este ejemplo utilizaremos los datos que contiene una librera de R, datasets de uso muy
extendido a la hora de hacer pruebas o de ejemplificar. No solo existe iris, hay una larga lista de
datos disponibles sobre varias disciplinas, escribiendo data() en la consola tendr la lista completa:
Dat a set s i n package dat aset s :
Ai r Passenger s Mont hl y Ai r l i ne Passenger Number s 1949- 1960
BJ sal es Sal es Dat a wi t h Leadi ng I ndi cat or
BJ sal es. l ead ( BJ sal es) Sal es Dat a wi t h Leadi ng I ndi cat or
BOD Bi ochemi cal Oxygen Demand
39
R para principiantespag. 36 E. Paradis, traduccin de J.A.Ahumeda, op. Cit.
40
Ejercicio adaptado de Practicas de estadstica en R Manuel Febrero Bande, Pedro Galeano San Miguel, Julio Gonzlez Daz y
Beatriz Pateiro Lpez. Universidad de Santiago de Compostela, 2008. Pag. 69 y sgtes
82 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
CO2 Car bon Di oxi de Upt ake i n Gr ass Pl ant s
Chi ckWei ght Wei ght ver sus age of chi cks on di f f er ent di et s
DNase El i sa assay of DNase
EuSt ockMar ket s Dai l y Cl osi ng Pr i ces of Maj or Eur opean St ock I ndi ces,
1991- 1998
For mal dehyde Det er mi nat i on of For mal dehyde
Hai r EyeCol or Hai r and Eye Col or of St at i st i cs St udent s
Har man23. cor Har man Exampl e 2. 3
Har man74. cor Har man Exampl e 7. 4
I ndomet h Phar macoki net i cs of I ndomet haci n
I nsect Spr ays Ef f ect i veness of I nsect Spr ays
J ohnsonJ ohnson Quar t er l y Ear ni ngs per J ohnson & J ohnson Shar e
LakeHur on Level of Lake Hur on 1875- 1972
Li f eCycl eSavi ngs I nt er count r y Li f e- Cycl e Savi ngs Dat a
Lobl ol l y Gr owt h of Lobl ol l y pi ne t r ees
Ni l e Fl ow of t he Ri ver Ni l e
Or ange Gr owt h of Or ange Tr ees
Or char dSpr ays Pot ency of Or char d Spr ays
Pl ant Gr owt h Resul t s f r oman Exper i ment on Pl ant Gr owt h
Pur omyci n React i on Vel oci t y of an Enzymat i c React i on
Seat bel t s Road Casual t i es i n Gr eat Br i t ai n 1969- 84
Theoph Phar macoki net i cs of Theophyl l i ne
Ti t ani c Sur vi val of passenger s on t he Ti t ani c
Toot hGr owt h The Ef f ect of Vi t ami n C on Toot h Gr owt h i n Gui nea Pi gs
UCBAdmi ssi ons St udent Admi ssi ons at UC Ber kel ey
UKDr i ver Deat hs Road Casual t i es i n Gr eat Br i t ai n 1969- 84
UKgas UK Quar t er l y Gas Consumpt i on
USAccDeat hs Acci dent al Deat hs i n t he US 1973- 1978
USAr r est s Vi ol ent Cr i me Rat es by US St at e
USJ udgeRat i ngs Lawyer s' Rat i ngs of St at e J udges i n t he US Super i or Cour t
USPer sonal Expendi t ur e Per sonal Expendi t ur e Dat a
VADeat hs Deat h Rat es i n Vi r gi ni a ( 1940)
WWWusage I nt er net Usage per Mi nut e
Wor l dPhones The Wor l d' s Tel ephones
abi l i t y. cov Abi l i t y and I nt el l i gence Test s
ai r mi l es Passenger Mi l es on Commer ci al US Ai r l i nes, 1937- 1960
ai r qual i t y New Yor k Ai r Qual i t y Measur ement s
anscombe Anscombe' s Quar t et of ' I dent i cal ' Si mpl e Li near
Regr essi ons
at t enu The J oyner - Boor e At t enuat i on Dat a
at t i t ude The Chat t er j ee- Pr i ce At t i t ude Dat a
aust r es Quar t er l y Ti me Ser i es of t he Number of Aust r al i an
Resi dent s
beaver 1 ( beaver s) Body Temper at ur e Ser i es of Two Beaver s
beaver 2 ( beaver s) Body Temper at ur e Ser i es of Two Beaver s
car s Speed and St oppi ng Di st ances of Car s
chi ckwt s Chi cken Wei ght s by Feed Type
co2 Mauna Loa At mospher i c CO2 Concent r at i on
cr i mt ab St udent ' s 3000 Cr i mi nal s Dat a
di scover i es Year l y Number s of I mpor t ant Di scover i es
esoph Smoki ng, Al cohol and ( O) esophageal Cancer
eur o Conver si on Rat es of Eur o Cur r enci es
eur o. cr oss ( eur o) Conver si on Rat es of Eur o Cur r enci es
eur odi st Di st ances Bet ween Eur opean Ci t i es
f ai t hf ul Ol d Fai t hf ul Geyser Dat a
f deat hs ( UKLungDeat hs) Mont hl y Deat hs f r omLung Di seases i n t he UK
f r eeny Fr eeny' s Revenue Dat a
f r eeny. x ( f r eeny) Fr eeny' s Revenue Dat a
f r eeny. y ( f r eeny) Fr eeny' s Revenue Dat a
i nf er t I nf er t i l i t y af t er Spont aneous and I nduced Abor t i on
i r i s Edgar Ander son' s I r i s Dat a
i r i s3 Edgar Ander son' s I r i s Dat a
i sl ands Ar eas of t he Wor l d' s Maj or Landmasses
l deat hs ( UKLungDeat hs) Mont hl y Deat hs f r omLung Di seases i n t he UK
l h Lut ei ni zi ng Hor mone i n Bl ood Sampl es
l ongl ey Longl ey' s Economi c Regr essi on Dat a
l ynx Annual Canadi an Lynx t r appi ngs 1821- 1934
mdeat hs ( UKLungDeat hs) Mont hl y Deat hs f r omLung Di seases i n t he UK
mor l ey Mi chel son Speed of Li ght Dat a
mt car s Mot or Tr end Car Road Test s
nht emp Aver age Year l y Temper at ur es i n New Haven
83 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
not t em Aver age Mont hl y Temper at ur es at Not t i ngham, 1920- 1939
occupat i onal St at us Occupat i onal St at us of Fat her s and t hei r Sons
pr eci p Annual Pr eci pi t at i on i n US Ci t i es
pr esi dent s Quar t er l y Appr oval Rat i ngs of US Pr esi dent s
pr essur e Vapor Pr essur e of Mer cur y as a Funct i on of Temper at ur e
quakes Locat i ons of Ear t hquakes of f Fi j i
r andu RandomNumber s f r omCongr uent i al Gener at or RANDU
r i ver s Lengt hs of Maj or Nor t h Amer i can Ri ver s
r ock Measur ement s on Pet r ol eumRock Sampl es
sl eep St udent ' s Sl eep Dat a
st ack. l oss ( st ackl oss) Br ownl ee' s St ack Loss Pl ant Dat a
st ack. x ( st ackl oss) Br ownl ee' s St ack Loss Pl ant Dat a
st ackl oss Br ownl ee' s St ack Loss Pl ant Dat a
st at e. abb ( st at e) US St at e Fact s and Fi gur es
st at e. ar ea ( st at e) US St at e Fact s and Fi gur es
st at e. cent er ( st at e) US St at e Fact s and Fi gur es
st at e. di vi si on ( st at e) US St at e Fact s and Fi gur es
st at e. name ( st at e) US St at e Fact s and Fi gur es
st at e. r egi on ( st at e) US St at e Fact s and Fi gur es
st at e. x77 ( st at e) US St at e Fact s and Fi gur es
sunspot . mont h Mont hl y Sunspot Dat a, 1749- 1997
sunspot . year Year l y Sunspot Dat a, 1700- 1988
sunspot s Mont hl y Sunspot Number s, 1749- 1983
swi ss Swi ss Fer t i l i t y and Soci oeconomi c I ndi cat or s ( 1888) Dat a
t r eer i ng Year l y Tr eer i ng Dat a, - 6000- 1979
t r ees Gi r t h, Hei ght and Vol ume f or Bl ack Cher r y Tr ees
uspop Popul at i ons Recor ded by t he US Census
vol cano Topogr aphi c I nf or mat i on on Auckl and' s Maunga Whau Vol cano
war pbr eaks The Number of Br eaks i n Yar n dur i ng Weavi ng
women Aver age Hei ght s and Wei ght s f or Amer i can Women
LLamamos al paquete Iris:
> dat a( i r i s) ;
> i r i s # l i st amos I RI S
Sepal . Lengt h Sepal . Wi dt h Pet al . Lengt h Pet al . Wi dt h Speci es
1 5. 1 3. 5 1. 4 0. 2 set osa
2 4. 9 3. 0 1. 4 0. 2 set osa
3 4. 7 3. 2 1. 3 0. 2 set osa
4 4. 6 3. 1 1. 5 0. 2 set osa
5 5. 0 3. 6 1. 4 0. 2 set osa
6 5. 4 3. 9 1. 7 0. 4 set osa
7 4. 6 3. 4 1. 4 0. 3 set osa
8 5. 0 3. 4 1. 5 0. 2 set osa
9 4. 4 2. 9 1. 4 0. 2 set osa
..
Iris esta compuesto por 150 registros de 5 campos cada uno, referidos a especies vegetales, en
pantalla una muestra de los primeros 9. Con estos datos deseamos realizar un grafico que nos
muestre la relacin de longitud y anchura de ptalo (Petal length, Petal Width). Si contamos
los elementos del vector
tenemos que FC
41
es la
manera de indexar los datos;
longitud de ptalos es iris[ ,3]
e iris[ ,4] el ancho de los
mismos. Esto desplegara los
41
FC: fila y columna Ya lo ha olvidado?
84 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
datos de dichos indicadores por columna, es decir 150 datos por cada uno. En la imagen se ven
listados los dos vectores que reflejan los valores de dichas columnas. Ahora vamos a crear un
grafico en el cual los datos correspondan a los dos ejes: ancho de ptalos al eje Y, longitud del
ptalo a X. Sin embargo antes de graficar seria bueno ver que escala de valores tenemos. Con las
funciones min() y max() aplicadas a cada vector de la serie de datos, podemos hacernos una idea:
> mi n( i r i s[ , 3] ) ;
[ 1] 1
> max( i r i s[ , 3] ) ;
[ 1] 6. 9
> mi n( i r i s[ , 4] ) ;
[ 1] 0. 1
> max( i r i s[ , 4] ) ;
[ 1] 2. 5
La escala de X estar dentro de 1 a 7 y la de Y entre 0.1 y 2.5; la funcin plot() se encargara de
graficarlo dentro de estos parmetros, aunque se pueden modificar a gusto si Ud. lo desea. La
funcin plot() la escribimos as:
> pl ot ( i r i s[ , 3] , i r i s[ , 4] , mai n="Longi t ud y anchur a de Pet al os de I r i s", xl ab="Longi t ud del
pet al o", yl ab="Anchur a del pet al o") ;
Observe que longitud del ptalo (iris[,3]),
es el eje X; primer argumento de plot. La
anchura, el eje Y, es iris[,4]; el segundo
argumento de la funcin. Main, xlab e
ylab son las etiquetas del grafico. Como se
advierte, hay algunos valores que estn
destacados en la parte inferior. Una forma
de identificarlos es mediante la funcin
identify(), que funciona pasando los
parmetros X,Y y devuelve los nmeros ID
de los datos marcados.
> i dent i f y( i r i s[ , 3] , i r i s[ , 4] )
[ 1] 24 44 45 99
> i dent i f y( i r i s[ , 3] , i r i s[ , 4] )
[ 1] 68
La primera lnea llama a identify() y activa en el
grafico el locator active seleccionando un
punto con el puntero (una cruz), o varios
consecutivam,ente; al salir con escape da la
salida de ID del punto. El ID es el numero de
registro. En el caso de algunos de esos valores:
> i r i s[ 24, 5]
[ 1] set osa
Level s: set osa ver si col or vi r gi ni ca
> i r i s[ 45, 5]
[ 1] set osa
85 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Level s: set osa ver si col or vi r gi ni ca
Dados los nmeros de componentes (el ID y el campo 5to: especie) los resultados son los que
salen por pantalla. Una rpida visin nos permite definir que el agrupamiento inferior consisten en
setosa y el punto 68 (el ultimo, que esta sobre la cuz) cuyo id es 68 es una versicolor.
i. Ejemplo de graficacin multidimensional
Una manera de transformar el grafico bidimensional en multidimensional es identificando en el
mismo grafico las diferentes especies; por ejemplo adicionndole color distintivo a cada una:
> i r i s. col or <- c( "r ed", "gr een", "bl ue") [ i r i s$Speci es]
> pl ot ( i r i s[ , 3] , i r i s[ , 4] , col =i r i s. col or , mai n="Longi t ud y anchur a de pet al o segun especi es de
I r i s", xl ab="Longi t ud de pet al o", yl ab="Anchur a de pet al o")
> l egend( 5, 1. 0, c( "Set osa", "Ver si col or ", "Vi r gi ni ca") , pch=1, col =c( "r ed", "gr een", "bl ue") )
El resultado:
La primera lnea crea un vector de
tres colores que es asociado a la
columna de especies, en el orden
que van surgiendo. La segunda
lnea plotea acorde a lo ya visto.
La tercera agrega el cuadro de
leyenda y la explicacin del cdigo
de colores, las coordenadas 5, 1.0
son el punto de arranque del
cuadro (esquina superior
izquierda) y las dos cadenas concatenadas (especies y colores) las referencias ordenadas.
Otra manera es adems de dar color, es asignarle un smbolo propio. En el siguiente desarrollo
utilizamos las funciones matplot() y matpoints() de manera similar a cuando utilizamos plot y
points en la primera parte de graficacin.
> i S <- i r i s$Speci es == "set osa"
> i V <- i r i s$Speci es == "ver si col or "
> i Vi <- i r i s$Speci es == "vi r gi ni ca"
> mat pl ot ( c( 1, 8) , c( 0, 4. 5) , t ype= "n", xl ab="Longi t ud", yl ab ="Anchur a", mai n = "Pet al os y
Sepal os de I r i s")
> mat poi nt s( i r i s[ i S, c( 1, 3) ] , i r i s[ i S, c( 2, 4) ] , pch =1, col =c( 2, 4) )
> mat poi nt s( i r i s[ i V, c( 1, 3) ] , i r i s[ i V, c( 2, 4) ] , pch =4, col =c( 2, 4) )
> mat poi nt s( i r i s[ i Vi , c( 1, 3) ] , i r i s[ i Vi , c( 2, 4) ] , pch=20, col =c( 2, 4) )
> l egend( 1, 5, c( "Sepal os Set osa", "Pet al os Set osa", "Sepal os Ver si col or ", "Pet al os
Ver si col or ", "Sepal os Vi r gi ni ca", "Pet al os Vi r gi ni ca") , pch =c( 1, 1, 4, 4, 20, 20) , col =r ep( c( 2, 4) ,
2) )
En las primeras lneas asignamos (==) a iS, iV, iVi valores lgicos segn la pertenencia a la especie
en cuestin, los tres vectores de datos son:
86 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[19] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[37] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
[55] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[73] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[91] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[109] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[127] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[145] FALSE FALSE FALSE FALSE FALSE FALSE
> iV
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[19] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
[55] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[73] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[91] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[109] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[127] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[145] FALSE FALSE FALSE FALSE FALSE FALSE
> iVi
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[19] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[55] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[73] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[91] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[109] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[127] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[145] TRUE TRUE TRUE TRUE TRUE TRUE
A riesgo de ser penosamente detallistas es importante constatar como funciona esto. En el vector
iS el primer valor es TRUE, FALSE en los dems, en iV el valor 55 es TRUE, no en los dems
vectores, en iVi el valor 150 es TRUE y FALSE en los demas Estas tres pequeas lneas y la
utilizacin de una condicin lgica establecen un poderoso filtro de datos. Cada dato, al ser
ploteado por la funcin matpoints() imprime o no segn la condicin, la separacin de Spalos y
Ptalos esta determinada por las variables que concatenan el punto
mat poi nt s( i r i s[ i S, c( 1, 3) ] , i r i s[ i S, c( 2, 4) ] , pch =1, col =c( 2, 4) )
La primera expresin por spalos y la segunda por ptalos, si son TRUE, sino no imprimen. El
resultado:
Al asignar un smbolo y un
color caracterstico por
cada clasificacin y por la
condicin T/F van
imprimiendo los puntos.
No se preocupe si aun no
lo comprende, es cosa de
practica.
Copie el cdigo y
prubelo, es la mejor
manera de entender su
funcionamiento.
87 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Finalmente la funcin pairs() crea un despliegue multidimensional
j. Concluyendo
Existen numerosas y muy
sofisticadas funciones
graficadoras, aqu solo
hemos expuesto algunas de
las ms sencillas. Los
paquetes grid y lattice, por
ejemplo, poseen graficas
muy superiores y ms
elaboradas. Para explorarlas
en la consola use demo() y
en el cuadro de demos que
aparezca, vea las funciones
graficas (varias) existentes.
Aqui algunas imgenes de
muestra:
88 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
89 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
Bibliografia
La bibliografa sobre R y sus libreras y funciones es amplia, variada y libre. Es muy comn
encontrar documentacin academica universitaria en casi todas las disciplinas, por lo que no seria
extrao que en lo que Ud haga, ya estn escritos algunos ensayos, guias o manuales. De todos hay
algo para aprender y tomar.
Nosotros somos deudores de muchos otros que han dejado sus experiencias en la web y nuestra
aspiracin es que este pequeo trabajo sea de utilidad para que ud se inicie en este mundo que
posee las caractersticas de ser libre, gratuito, abierto y colaborativo adems de profundamente
creativo.
A continuacin algunos textos de inters (que hemos citado o utilizado) de los muchos que
encontrara en la web:
1. Analisis de series temporales Juan Antonio Brea Moral, s/d, 88 paginas
2. Curso basico de R Francesc Carmona ([email protected]), 2007, 98 pags.
3. Preprocesamiento de Datos Dr. Edgar Acuna, Departmento de Matematicas Universidad de Puerto Rico-
Mayaguez website: academic.uprm.edu/eacuna, 50 pags.
4. Introduccion a R, Ejercicios y ejemplos Alex Sanchez y Francesc Carmona, Departament dEstadstica. U.B.
2008, 4 pags.
5. Funciones estadsticas en R y S-plus Estadstica Aplicada con S-PLUS, M. Dolores Ugarte y Ana F. Militino
Universidad Pblica de Navarra, 4 pags.
6. Graficos Estadsticos con R Juan Carlos Correa y Nelfi Gonzalez, Posgrado en Estadstica, Universidad
Nacional-Sede Medelln ([email protected]), 2002, 299 pags.
7. Notas sobre R (graficos en R) Francesc Carmona, Jordi Ocaa i Alex Sanchez, Department d'Estadistica,
Universitat de Barcelona, 2008, 35 pags.
8. Curso introduccin a R, (5 cursos), David V. Conesa Guilln, Grup d'Estadstica Espacial i Temporal en
Epidemiologia i Medi Ambient, Dept. d'Estadstica i Investigaci Operativa, Universitat de Valncia. 42 pags.
9. Introduccin al Entorno r Paula Elosua, 2011, 102 pags.
10. Lectura, manipulacion y analisis de datos en R F. Tusell, http://www.et.bs.ehu.es/~etptupaf, 2005, 23pags.
11. Como mantener tus datos de investigacin ordenadas, Duncan Golicher, 2008, 16 pags.
12. Estadstica Basica con R y RCommander (Version Febrero 2008), A. J. Arriaza Gomez, F. Fernandez Palacn,
M. A. Lopez Sanchez, M. Muoz Marquez, S. Perez Plaza, A. Sanchez Navas; U. de Cadiz,2008, 20 pags
13. Introduccin a Series de Tiempo John Villavicencio, 33 pags.
14. Mtodos Estadsticos con R y R Commander Prof. Dr. Antonio Jos Sez Castillo, Departamento de
Estadstica e Investigacin Operativa, Universidad de Jan, 2010, 157 pags.
15. NOTAS DE CLASE Series de Tiempo con R Norman Giraldo Gomez, Profesor Asociado, Escuela de Estadstica,
Universidad Nacional de Colombia, Medelln, 2006, 176 pags.
16. Practicas de Estadstica en R Ingeniera Tecnica en Informatica de Sistemas Manuel Febrero Bande, Pedro
Galeano San Miguel, Julio Gonzalez Daz, Beatriz Pateiro Lopez; 2008, U. Santiago de Compostela, 114 pags.
17. R Data Import/Export R Development Core Team, 2010, 34 pags.
18. R para Principiantes Emmanuel Paradis, Institut des Sciences de lEvolution Universit Montpellier II
([email protected]) traducido por Jorge A. Ahumada, RCUH/ University of Hawaii & USGS/
National Wildlife Health Center ([email protected]), 2003, 61 pags.
19. Introduccion a R Notas sobre R: Un entorno de programacion para Analisis de Datos y Graficos Version 1.0.1
(2000), R Development Core Team, 106 pags.
20. Cartas sobre Estadstica de la Revista Argentina de Bioingeniera Dr. Ing. Marcelo R. Risk, Facultad Regional
Buenos Aires, Universidad Tecnolgica Nacional, Argentina, 2003, 57 pags.
90 Introduccin a R utilizando Rstudio server Edwin Aguiar ([email protected])
21. Introduccin a R -Sesin 3- Estructuras de Datos y Grficos Joaqun Ortega Snchez, Centro de Investigacin
en Matemticas, CIMAT, Guanajuato, Gto., Mexico, ([email protected]) , http://www.cimat.mx, 2009, 111
pags.
22. Tutorial de R Javier Ramrez Prez de Inestrosa, Departamento de Teora de la Seal, Telemtica y
Comunicaciones, Universidad de Granada, 2009, 33 pags.