Está en la página 1de 37

Arreglos multidimensionales: Matrices

A parte de los escalares y vectores, R dispone de variables multidimensionales, como son:


matrices, arreglos, tablas (data.frame) y listas. Las matrices se denen por

1 > M <- matrix (c (1 , 2 , 3, 9, 9, 9 , 0, 3, 2) , ncol = 3, nrow = 3)
2 [ ,1] [ ,2] [ ,3]
3 [1 ,] 1 9 0
4 [2 ,] 2 9 3
5 [3 ,] 3 9 2
6 > M <- matrix (c (1 , 2 , 3, 9, 9, 9 , 0, 3, 2) , ncol = 3, nrow = 3,
byrow = TRUE )
7 [ ,1] [ ,2] [ ,3]
8 [1 ,] 1 2 3
9 [2 ,] 9 9 9
10 [3 ,] 0 3 2
11 > rownames (M ) <- paste0 ( ' Factor ', 1:3)
12 > colnames (M ) <- LETTERS [1:3]
13 A B C
14 Factor1 1 2 3
15 Factor2 9 9 9
16 Factor3 0 3 2
17 > class (M)
18 [1] " matrix "

Arreglos multidimensionales: Arreglos
Arreglos (array) son variables con al menos una dimensión.

1 > array ( letters , dim = c (3 ,3 ,2) )
2 > a <- array (1:9 , dim = c (3 ,3) )
3 > colnames ( a ) <- paste ( ' fila ' , 1:3 , sep = '. ')
4 > rownames ( a ) <- paste0 ( ' col ' , 1:3)
5 > a
6 > dimnames ( a )

Otros comandos útiles para construir arreglos son rbind y cbind que unen dos o mas
arreglos existentes en forma de la o columna:

1 > ( b <- cbind (1:3 , 2:4) ) # () ext .
2 [ ,1] [ ,2]
3 [1 ,] 1 2
4 [2 ,] 2 3
5 [3 ,] 3 4
6 > r <- rbind (1:3 , 2:4)
7 > r
8 [ ,1] [ ,2] [ ,3]
9 [1 ,] 1 2 3
10 [2 ,] 2 3 4

Arreglos multidimensionales: Tablas (data.frame)
Las tablas (data.frame) son los objetos usados por defecto para almacenar datos
multidimensionales. Muchas de las funciones disponibles asumen que los datos son de
esta clase (lm, glm, . . . ).

1 > D <- data . frame ( Nombres = c ( ' Andreina ' , ' Veronica ' , '
Zuleima ') , Edades = c (28 , 25 , 37) , IRC = c (4.55 , 2.63 ,
3.31) , stringsAsFactors = FALSE )
2 > View ( D ) # ó simplemente D
3 Nombres Edades IRC
4 1 Andreina 28 4.55
5 2 Veronica 25 2.63
6 3 Zuleima 37 3.31

Los elementos de cualquier objeto que tenga dimensiones pueden ser accedidos mediante
sus miembros

1 > D $ Nombres
2 [1] " Andreina " " Veronica " " Zuleima "
3 > D [ , " Edades " ] # equivalente D [ , 2]
4 [1] 28 25 37

Dos tablas se pueden unir a través del comando merge.
Arreglos multidimensionales: Tablas de contingencia

Las tablas de contingencia (table) son elementos intrínsecos para el


análisis de factores.

1 > a <- letters [1:4]
2 > table (a , sample ( a) )

4 a a b c d
5 a 0 0 0 1
6 b 1 0 0 0
7 c 0 1 0 0
8 d 0 0 1 0

10 > table ( rpois (100 , 5) )

12 1 2 3 4 5 6 7 8 9 10
13 1 10 8 21 26 7 10 6 8 3

Para conocer otros comandos más avanzados en la construcción de tablas,
consultar tabulate, ftable, margin.table, prop.table, addmargins y
xtabs.
Arreglos multidimensionales: Listas (S3)

Las listas son los objetos más genéricos del lenguaje, son de dimensiones
arbitrarias donde cada dimensión contiene una colección de cualquier tipo de
elementos. La mayoría de los comandos (métodos S3) devuelven objetos que en
realidad son listas (con nombres de clases particulares).
Las listas se denen con el comando list()

1 L <- list ( Nombre = c ( ' Julia ' , ' Maria ' , ' Rosa ') , Cargo
= factor ( letters [1:5]) )
2 names ( L )
3 L

Las listas pueden estar anidadas

1 > ( LL <- list (L , L ) )
2 > length ( LL ) # 2
3 > class ( LL )
4 [1] " list "

Existe una gran cantidad de comandos que operan sobre las listas: la familia
*apply, la librería plyr, . . .
Arreglos multidimensionales: Acceso a elementos II

Para conocer los nombre de los miembros de un objeto: names(x)


Clase de un objeto: class(x)
Nombre de las dimensiones: dimnames(x), rownames(x) y colnames(x)
Tamaño de cada dimensión: dim(x), longitud de listas: length(LL)

1 > data ( airquality )
2 > head ( airquality )
3 Ozone Solar . R Wind Temp Month Day
4 1 41 190 7.4 67 5 1
5 2 36 118 8.0 72 5 2
6 3 12 149 12.6 74 5 3
7 4 18 313 11.5 62 5 4
8 5 NA NA 14.3 56 5 5
9 > names ( airquality )
10 [1] " Ozone " " Solar . R " " Wind " " Temp " " Month " " Day "
11 > class ( airquality )
12 [1] " data . frame "
13 > colnames ( airquality )
14 [1] " Ozone " " Solar . R " " Wind " " Temp " " Month " " Day "

Arreglos multidimensionales: Acceso a elementos II

1 Al igual que los vectores, los arreglos multidimensionales se pueden acceder


mediante índices de posición e índices lógicos:
x[, "miembro"], x[fi, co], x["miembro", ], x[[n]] y x[["miembro"]].

1 > airquality [1:2 , ]
2 Ozone Solar .R Wind Temp Month Day
3 1 41 190 7.4 67 5 1
4 2 36 118 8.0 72 5 2
5 > airquality [1:2 , " Solar .R" ]
6 [1] 190 118
7 > airquality [1:2 , c(" Solar . R" , " Ozone ")]
8 Solar .R Ozone
9 1 190 41
10 2 118 36


1 > airquality [2 , c(" Solar .R" , " Ozone ") ] <- c (93 , 22)
2 > head ( airquality , n = 3)
3 Ozone Solar .R Wind Temp Month Day
4 1 41 190 7.4 67 5 1
5 2 22 93 8.0 72 5 2
6 3 12 149 12.6 74 5 3

Arreglos multidimensionales: Acceso a elementos II
2 Se pueden acceder por los nombres de cada miembro x$miembro ó x$"miembro"

1 > names ( airquality )
2 [1] " Ozone " " Solar . R " " Wind " " Temp " " Month " " Day "
3 > head ( airquality , n = 3)
4 Ozone Solar . R Wind Temp Month Day
5 1 41 190 7.4 67 5 1
6 2 22 93 8.0 72 5 2
7 3 12 149 12.6 74 5 3
8 > airquality $ Solar . R [1:3] <- c (100 , 92 , 88)
9 > head ( airquality , n = 3)
10 Ozone Solar . R Wind Temp Month Day
11 1 41 100 7.4 67 5 1
12 2 36 92 8.0 72 5 2
13 3 12 88 12.6 74 5 3
 
1 > tmp = airquality $ Temp
2 > length ( tmp )
3 [1] 153
4 length ( airquality $ Temp )
5 [1] 153

Arreglos multidimensionales: Acceso a elementos II
3 Para la extracción de un subconjunto de una matriz o tabla se usa subset

1 > data ( airquality )
2 > head ( airquality )
3 Ozone Solar . R Wind Temp Month Day
4 1 41 190 7.4 67 5 1
5 2 36 118 8.0 72 5 2
6 3 12 149 12.6 74 5 3
7 4 18 313 11.5 62 5 4
8 5 NA NA 14.3 56 5 5
9 > S = subset ( airquality , Temp >80 , select = Ozone : Day )
10 > head ( S )
11 Ozone Solar . R Wind Temp Month Day
12 29 45 252 14.9 81 5 29
13 35 NA 186 9.2 84 6 4
14 36 NA 220 8.6 85 6 5
15 38 29 127 9.7 82 6 7
16 subset ( airquality , Temp >80 , select = c ( Ozone , Temp ) )
 
1 subset ( airquality , Day == 1 , select = - Temp )
2 subset ( airquality , select = Ozone : Wind )

P Práctica: Restaurante

Con el comando load("restaurant.rda") cargue una muestra de datos de un


restaurante. Realice las siguientes actividades

1 Averigüe la estructura de la base de datos (str, View, head)


2 ¾Cada variable cuántos factores tiene?

3 ¾La muestra cuántos hombres y mujeres reporta?

4 ¾Cuánto es el gasto promedio? y ¾segregado por género?

5 ¾Existe alguna correlación entre el tipo de postre y género?

6 El cliente sospecha que los hombres están correlacionados con platos


de carne, puede decir algo al respecto?

7 ¾Se puede decir que en promedio los hombre gastaron más que las
mujeres? ¾cuáles son las respectivas desviaciones estándar?

8 Indique el género que consume mas sopas

9 ...
Alcance de variables I: attach y search
Hay oportunidades donde el acceso individual de miembros de un objeto es preferible.
Accesar x$miembro a través de miembro. Esto se logra con attach del objeto de interés
a la ruta de búsqueda.

1 x = list ( Letras = letters , Numeros = seq _ along ( letters ) )
2 x $ Letras
3 attach ( x )
4 Letras


1 > data ( women ) ; names ( women )
2 [1] " height " " weight "
3 > search ()
4 [1] " . GlobalEnv " " package : datasets " " package : base "
5 > mean ( women $ height )
6 [1] 65
7 > attach ( women )
8 > search ()
9 [1] " . GlobalEnv " " women " " package : datasets " " package :
base "
10 > mean ( height )
11 [1] 65

Alcance de variables I: detach

Una vez nalizado el uso de los miembros, se quita el vínculo a la ruta de


búsqueda, con el comando detach

1 > x = list ( Letras = letters , Numeros = seq _ along ( letters ) )
2 > x $ Letras
3 [1] " a " " b " " c " ... " x " " y " " z "
4 > attach ( x )
5 > search ()
6 [1] " . GlobalEnv " " x " " package : datasets " " package : base "
7 > Letras
8 [1] " a " " b " " c " ... " x " " y " " z "


1 > detach ( x )
2 > Letras
3 Error : object ' Letras ' not found
4 > search ()
5 [1] " . GlobalEnv " " package : datasets " " package : base "
6 > x $ Letras
7 [1] " a " " b " " c " ... " x " " y " " z "

Alcance de variables I: Eclipse

Hay que tener cuidado al efectuar un attach a x$miembro cuando ya


existe una variable con nombre miembro. En este caso x$miembro a través
del attach es eclipsado por la variable ya existente en el entorno miembro.

1 > Nombre = ' Manuel '
2 > lista = data . frame ( Nombre = ' Pedro ')
3 > Nombre
4 [1] " Manuel "
5 > attach ( lista )
6 The following object is masked _ by _ . GlobalEnv : Nombre
7 > Nombre
8 [1] " Manuel "

Nota: a través del comando attach no es posible modicar las variables
usando simplemente el nombre del miembro. Este comando solo es para
leer sus contenidos usando miembro y no x$miembro.
Los comandos str, head, tail
El comando str muestra de forma compacta la estructura de un objeto y es uno de los
primeros comandos llamados al cargar o vaciar una base de datos:

1 > data ( airquality )
2 > str ( airquality )
3 ' data . frame ': 153 obs . of 6 variables :
4 $ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ...
5 $ Solar . R : int 190 118 149 313 NA NA 299 99 ...
6 $ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 ...
7 $ Temp : int 67 72 74 62 56 66 65 59 61 69 ...
8 $ Month : int 5 5 5 5 5 5 5 5 5 5 ...
9 $ Day : int 1 2 3 4 5 6 7 8 9 10 ...

Los comandos head y tail muestran las primeras y últimas n líneas de un objeto (tabla,
matriz, función, . . . )

1 > head ( airquality )
2 Ozone Solar . R Wind Temp Month Day
3 1 41 190 7.4 67 5 1
4 ...
5 5 12 149 12.6 74 5 3
6 6 NA NA 14.3 56 5 5

P Práctica

El objetivo de esta práctica es entender el efecto que produce el comando


attach
1 Cargar los datos cars: data(cars)
2 Ejecute plot(speed, dist)
3 Guardar el vector de 1 a 25 en paso 0.5 en la variable speed
4 Construya el vector dist como el cuadrado de speed
5 Ejecute el comando plot(speed, dist)

6 ¾Cómo se puede volver a acceder a las variables speed y dist


asociados a cars?
attach(cars)
plot(speed ~dist)
speed = seq(1, 25, 0.5)
dist = speed^2
plot(speed ~dist)
plot(cars$speed ~cars$dist)
Operadores sobre arreglos multidimensionales
Existen varios comandos que operan sobre las dimensiones de los arreglos
multidimensionales

Aritméticos Suma por las (rowSums) o columnas (colSums)

Estadísticos Promedio por las (rowMeans) o columnas (colMeans)

Arbitrario Otras operaciones se pueden construir para que se ejecuten


de forma repetida a los largo de las dimensiones denidas,
usando el comando apply

1 apply (X , MARGIN =1 , FUN = median )
2 apply (D , 2 , sd )

Para las listas también hay comandos que iteran sobre cada miembro

1 L <- list ( Edad = c (26 , 33 , 57 , 28) , Peso = c (72 , 88 ,
56 , 64) )
2 LM <- lapply (L , mean )
3 names ( LM ) <- paste0 ( ' Prom . ' , names ( L ) )
4 LM

Métodos y datos faltantes para arreglos multidimensionales
No siempre los datos a ser analizados están completos, aquellas observaciones faltantes
se denotan por la palabra clave NA.
Generalmente al contener un NA, el resultado de la operación suele ser NA:

1 > data <- c ( NA , 1:5}
2 > sum ( data )
3 [1] NA
4 > mean ( data )
5 [1] NA

El manejo de NA se puede especicar a cada comando:

1 > sum ( data , na . rm = TRUE )
2 [1] 15
3 > mean ( data , na . rm = TRUE )
4 [1] 3

Un comando para omitir todas aquellas entradas de una tabla (matriz, etc.) que
contengan NA es na.omit:

1 > na . omit ( data )
2 [1] 1 2 3 4 5

P Práctica

Score de jueces norteamericanos (John Hartigan, 1977).

Dado los datos USJudgeRatings


1 Entienda la estructura de los datos, ?USJudgeRatings muestra los
detalles de cada columna

2 Estime el juez con mayor y/o menor score rowSums, min, max
3 Estime el promedio grupal (summary) y los promedios de cada prueba

4 Ordene los jueces según su score sort, matrix, rownames


matrix(sort(rowSums(u)), ncol=1,dimnames = list(rownames(u)))
El comando aggregate
El comando aggregate llama cierta función (mean, summary) para cada nivel (factor,
valor, etc.) de alguna variable.
Ejemplo:
Se quiere el promedio de la variable y (d$y) según los niveles de x (d$x)

1 > d <- data . frame (x = rep (1:3 , each =3) , y = rep (1:3 , each =3)
+ rnorm (9) )
2 > d
3 x y
4 1 1 1.8027201
5 2 1 0.4231649
6 3 1 1.7083813
7 4 2 0.4208163
8 5 2 3.1780815
9 6 2 1.3696267
10 7 3 2.5009258
11 8 3 1.8170497
12 9 3 1.4221910

El comando aggregate
El comando aggregate llama cierta función (mean, summary) para cada nivel (factor,
valor, etc.) de alguna variable.
Ejemplo:
Se quiere el promedio de la variable y (d$y) según los niveles de x (d$x)

1 > d <- data . frame (x = rep (1:3 , each =3) , y = rep (1:3 , each =3)
+ rnorm (9) )
2 > d
3 x y
4 1 1 1.8027201
5 2 1 0.4231649
6 3 1 1.7083813
7 4 2 0.4208163
8 5 2 3.1780815
9 6 2 1.3696267
10 7 3 2.5009258
11 8 3 1.8170497
12 9 3 1.4221910
 
1 > aggregate ( y ~ x , data = d , mean )
2 x y
3 1 1 1.311422
4 2 2 1.656175
5 3 3 1.913389

El comando aggregate

Se quiere el promedio de la variable y (d$y) según los niveles de x (d$x)



1 > aggregate ( y ~ x , data = d , mean )
2 x y
3 1 1 1.311422
4 2 2 1.656175
5 3 3 1.913389

Dierencia entre mean y aggregate/mean
El comando aggregate

Se quiere el promedio de la variable y (d$y) según los niveles de x (d$x)



1 > aggregate ( y ~ x , data = d , mean )
2 x y
3 1 1 1.311422
4 2 2 1.656175
5 3 3 1.913389

Dierencia entre mean y aggregate/mean

1 > mean ( d $ y )
2 [1] 1.626995


1 > mean ( d $ y [ d $ x == 1])
2 [1] 1.311422
3 > mean ( d $ y [ d $ x == 2])
4 [1] 1.656175
5 > mean ( d $ y [ d $ x == 3])
6 [1] 1.913389

Ejemplo del comando aggregate

Ejemplo:
Se quiere un resumen de la variable y (d$y) según los niveles de x (d$x).

1 > aggregate ( d$y ~ d$x , FUN = summary )
2 d$x d$y . Min . d$y .1 st Qu . d $y. Mean d$ y .3 rd Qu . d$y. Max .
3 1 1 0.169 0.847 1.091 1.552 1.579
4 2 2 2.489 2.507 2.884 3.082 3.638
5 3 3 1.644 2.192 2.605 3.086 3.433


1 > summary (d)
2 x y
3 Min . :1 Min . :0.169
4 1 st Qu .:1 1 st Qu .:1.579
5 Median :2 Median :2.489
6 Mean :2 Mean :2.193
7 3 rd Qu .:3 3 rd Qu .:2.739
8 Max . :3 Max . :3.638

Se muestra la diferencia entre summary y aggregate/summary.
Arreglos multidimensionales: Algunos comentarios nales
Cada método tiene asociado tres funciones
Arreglos array(), as.array(), is.array()
Matrices matrix(), as.matrix(), is.matrix()
Tablas data.frame(), as.data.frame(), is.data.frame()
..
.
a través de estas funciones se pueden denir, mutar y vericar cada clase de método.
 
1 > D 10 > as . matrix ( D)
2 Nombres Edades IRC 11 Nombres Edades IRC
3 1 Andreina 28 4.55 12 [1 ,] " Andreina " " 28 " " 4.55 "
4 2 Veronica 25 2.63 13 [2 ,] " Veronica " " 25 " " 2.63 "
5 3 Zuleima 37 3.31 14 [3 ,] " Zuleima " " 37 " " 3.31 "
6 > is . data . frame (D ) 15 > class ( as . matrix (D))
7 [1] TRUE 16 [1] " matrix "
8 > is . matrix ( D) 17 > as . matrix ( D [ ,2:3])
9 [1] FALSE 18 Edades IRC
 19 [1 ,] 28 4.55
20 [2 ,] 25 2.63
21 [3 ,] 37 3.31

Lectura de datos

R cuenta con una gran gama de comandos para leer y cargar archivos de
datos, entre los más usuales están

read.table Lee archivos de datos en formato libre


read.csv Lee hoja de cálculos donde los datos están separados por
comas (,) y decimales por puntos (.)
read.csv2 Lee hoja de cálculos donde los datos están separados por
punto y comas (;) y decimales por comas (,)
read.xlsx Vacía una hoja de calculo XLSX en una tabla. Requiere de la
librería xlsx.
Ulteriores comandos para la carga de otros formatos se mencionan:
read.delim, read.ftable, scan, read.fwf, readBin, readLines,
readChar, read.DIF y read.socket.
La librería foreign permite la lectura de datos provenientes de Epi Info,
Minitab, S, SAS, SPSS, Stata, Systat, Weka y dBase.
Lectura de datos: read.table

Archivo effort.dat (http://data.princeton.edu/wws509/datasets/effort.dat)


Index of social setting, index of family planning eort, percent decline in
crude birth rate. 19651975 [Mauldin & Berelson (1978)]

setting effort change


Bolivia 46 0 1
Brazil 74 0 10
...
Peru 73 0 2
TrinidadTobago 84 15 29
Venezuela 91 7 11


1 > dir () # !
2 > MB = read . table (" effort . dat " , header = TRUE ) # setwd () !
3 > str ( MB )
4 ' data . frame ': 20 obs . of 3 variables :
5 $ setting : int 46 74 89 77 84 89 68 70 60 55 ...
6 $ effort : int 0 0 16 16 21 15 14 6 13 9 ...
7 $ change : int 1 10 29 25 29 40 21 0 13 4 ...
8 > View ( MB )
9 > barplot ( MB $ setting , names . arg = rownames ( MB ) , horiz =T , las =2)

Lectura de datos: read.table

Archivo effort.dat (http://data.princeton.edu/wws509/datasets/effort.dat)


Index of social setting, index of family planning eort, percent decline in
crude birth rate. 19651975 [Mauldin & Berelson (1978)]

Venezuela
setting effort change TrinidadTobago
Peru
Bolivia 46 0 1 Paraguay
Panama

Brazil 74 0 10 Nicaragua
Mexico

... Jamaica
Honduras

Peru 73 0 2 Haiti
Guatemala

TrinidadTobago 84 15 29 ElSalvador
Ecuador

Venezuela 91 7 11 DominicanRep
Cuba
CostaRica
Colombia
Chile
Brazil
Bolivia

20

40

60

80
1 > dir () # !
2 > MB = read . table (" effort . dat " , header = TRUE ) # setwd () !
3 > str ( MB )
4 ' data . frame ': 20 obs . of 3 variables :
5 $ setting : int 46 74 89 77 84 89 68 70 60 55 ...
6 $ effort : int 0 0 16 16 21 15 14 6 13 9 ...
7 $ change : int 1 10 29 25 29 40 21 0 13 4 ...
8 > View ( MB )
9 > barplot ( MB $ setting , names . arg = rownames ( MB ) , horiz =T , las =2)

Lectura de datos: read.csv
OANDA
TM
Archivo historicOANDA.csv
http://www.oanda.com/currency/historical-rates/

"Daily BID rates @ +/- 0%"


"www.oanda.com/currency/historical-rates/"
""
""
"EndDate","USDEUR","","","",""
"2014-10-05","0.7990",,,,
"2014-10-04","0.7935",,,,
"2014-10-03","0.7908",,,,

1 > OA = read . csv (" historicOANDA . csv " , skip =4)
2 > View ( OA )
3 > names ( OA )
4 [1] " EndDate " " USDEUR " "X" "X .1 " "X .2 " "X .3 "
5 > OA = subset (OA , select = c(" EndDate " ," USDEUR "))
6 > OA $ EndDate = as . Date ( OA $ EndDate )
7 > head (OA , n = 2)
8 EndDate USDEUR
9 1 2014 -10 -05 0.7990
10 2 2014 -10 -04 0.7935
11 > EU <- ts ( OA $ USDEUR , start (2014 ,1) , frequency =1)
12 > plot (EU , ylab = " Tasa de cambio USD EU " , xlab = 'Í ndice ')

Lectura de datos: read.csv
OANDA
TM
Archivo historicOANDA.csv
http://www.oanda.com/currency/historical-rates/ ●

0.795
"Daily BID rates @ +/- 0%"

Tasa de cambio USD EU


● ●

"www.oanda.com/currency/historical-rates/" ●●●

0.785

"" ●

"" ●●


"EndDate","USDEUR","","","",""

0.775
●●

●●●

"2014-10-05","0.7990",,,,
● ●●●
●●●
●●

"2014-10-04","0.7935",,,, 0 5 10 15 20 25 30

"2014-10-03","0.7908",,,, Índice


1 > OA = read . csv (" historicOANDA . csv " , skip =4)
2 > View ( OA )
3 > names ( OA )
4 [1] " EndDate " " USDEUR " "X" "X .1 " "X .2 " "X .3 "
5 > OA = subset (OA , select = c(" EndDate " ," USDEUR "))
6 > OA $ EndDate = as . Date ( OA $ EndDate )
7 > head (OA , n = 2)
8 EndDate USDEUR
9 1 2014 -10 -05 0.7990
10 2 2014 -10 -04 0.7935
11 > EU <- ts ( OA $ USDEUR , start (2014 ,1) , frequency =1)
12 > plot (EU , ylab = " Tasa de cambio USD EU " , xlab = 'Í ndice ')

Lectura de datos: read.csv2

Archivo mtcars.csv (data(mtcars))


"";"mpg";"cyl";"disp";"hp";"drat";"wt";"qsec";"vs";"am";"gear";"carb"
"Mazda RX4";21;6;160;110;3,9;2,62;16,46;0;1;4;4
"Mazda RX4 Wag";21;6;160;110;3,9;2,875;17,02;0;1;4;4
"Datsun 710";22,8;4;108;93;3,85;2,32;18,61;1;1;4;1
"Hornet 4 Drive";21,4;6;258;110;3,08;3,215;19,44;1;0;3;1


1 > CARS = read . csv2 (" mtcars . csv ")
2 > head ( CARS , n = 3)
3 X mpg cyl disp hp drat wt qsec vs am gear carb
4 Mazda RX4 21.0 6 160 110 3.90 2.62 16.46 0 1 4 4
5 RX4 Wag 21.0 6 160 110 3.90 2.87 17.02 0 1 4 4
6 Datsn 710 22.8 4 108 93 3.85 2.32 18.61 1 1 4 1
7 > attach ( CARS )
8 > unique ( carb )
9 [1] 4 1 2 3 6 8
10 > plot ( hp ~wt , typ ="n")
11 > text ( hp ~wt , labels = carb , col = carb , cex =2)

Lectura de datos: read.csv2

Archivo mtcars.csv (data(mtcars))


"";"mpg";"cyl";"disp";"hp";"drat";"wt";"qsec";"vs";"am";"gear";"carb"
"Mazda RX4";21;6;160;110;3,9;2,62;16,46;0;1;4;4
"Mazda RX4 Wag";21;6;160;110;3,9;2,875;17,02;0;1;4;4 8
"Datsun 710";22,8;4;108;93;3,85;2,32;18,61;1;1;4;1

300
"Hornet 4 Drive";21,4;6;258;110;3,08;3,215;19,44;1;0;3;1

 4

250
1 > CARS = read . csv2 (" mtcars . csv ")
4 4
4
2 > head ( CARS , n = 3) 4
4

200
X mpg cyl disp hp drat wt qsec vs am gear carb
hp
3

4 Mazda RX4 21.0 6 160 110 3.90 2.62 16.46 6 02 3132 3 4 4


5 RX4 Wag 21.0 6 160 110 3.90 2.87 17.02 022 1
150 4 4
6 Datsn 710 22.8 4 108 93 3.85 2.32 18.61 1 1 4 1
> attach ( CARS ) 4
7 2 4 24 1 1
100

8 > unique ( carb ) 2 11 2


9 [1] 4 1 2 3 6 8
11 1 2
10 > plot ( hp ~wt , typ ="n") 2
50

11 > text ( hp ~wt , labels = carb , col = carb , cex =2)


2 3 4 5

wt
Lectura de datos: read.xlsx
TM
Para la carga de archivos provenientes de Excel , es necesario el uso de la
librería xlsx TM
(requiere del entorno Java ). A título de ejemplo


1 > install . packages ( ' xlsx ') # Una vez
2 > library ( xlsx ) # Por cada sesi ón
3 > EUS = read . xlsx (" EUStock . xlsx " , sheetIndex =1)
4 > head ( EUS )
5 NA . DAX SMI CAC FTSE
6 1 1 1628.75 1678.1 1772.8 2443.6
7 2 2 1613.63 1688.5 1750.5 2460.2
8 ...
9 6 6 1610.61 1671.6 1714.3 2466.8
10 > mean ( EUS $ DAX )
11 [1] 2530.657

P Práctica: SUDEBAN

SECTOR BANCARIO INVERSIONES EN TÍTULOS VALORES POR


TIPO DE INVERSIÓN
SEGÚN MES Diciembre 2009 / Septiembre 2014 (Miles de Bolívares)
Lectura de datos: http://sudeban.gob.ve/?wpfb_dl=1024
1 Lectura de datos: cargar el archivo sudeban/serie2014.csv
2 Entender la estructura de los datos (str, View, names, attach)

3 Estimar promedios mensuales: Enero, Febrero, . . . , Diciembre

4 Estimar el promedio de Abril 2012 a Mayo 2013

5 Convertir tabla a porcentajes, utilizando la columna TOT.INV.TIT


6 Estimar la correlación entre los elementos TIT.SEC.PRIV y TIT.EST,
use el comando cor, ¾Qué observa?
Administrando el entorno

1 Entorno o sesión consta de todas las variable, funciones, constantes


denidas y paquetes cargados en el ambiente actual. La sesión se
puede guardar y cargar en cualquier momento. El comando que guarda
la sesión es save.image(), generalmente estos archivos usan la
extensión .RData
2 Las variables y funciones también pueden almacenarse
independientemente con el comando save() y los archivos tiene la
extensión .rda
3 Historial (diario): guarda y despliega todos los comandos ejecutados:
history(), loadhistory(file), savehistory(file)
4 El comando ls() muestras los objetos denidos en el entorno

5 Para borrar objetos se usa rm(list) y el comando rm(list=ls())


borra todos los objetos de la sesión
P Práctica

Almacenar el trabajo efectuado en la práctica anterior:

1 Almacene la tabla de datos (sudeban) en el archivosudeban.rda, use


el comandosave
2 Almacene una imagen de la sesión actual usando el comando
save.image, guarde la imagen en el archivo CursoR1.RData o utilice
la pestaña Environment del panel A.

3 Guarde el diario de todos los comando ejecutados, utilice o bien el


comando save.history o bien la pestaña history del panel A.

4 Re-establezca o reinicialice el entorno: rm(list=ls()) o utilice el


botón de clear en la pestaña Environment del panel A.

5 Vuelva a cargar la imagen del entorno almacenada en el archivo


CursoR1.RData y verique que todas las variables estén disponibles.
Opcionalmente puede cargar la tabla de la practica anterior cargando
el archivo sudeban.rda con el comando load.
Epílogo

Recapitulando los tópicos desarrollados:

3 R Studio 3 Tablas de contingencia


3 Ayuda 3 Listas
3 Nombres de variables y funciones 3 Acceso a elementos
3 Clases y objetos 3 Alcance de variables
3 Factores 3 Str, head y tail
3 Vectores 3 Operadores sobre arreglos
3 Summary 3 Datos faltantes
3 Matrices 3 Aggregate
3 Arreglos 3 Lectura de datos
3 Tablas 3 Administración del entorno
P Laboratorio

Utilizando la base de datos de R state.x77:


1 Describa la estructura de los datos, particularmente los nombres de las
columnas y la clase del objeto.

2 Extraer las primeras 2 las de la base de datos

3 Indique la cantidad de las que se disponen

4 Extraer las últimas 3 las de la base de datos

5 ¾La información relativa al estado de Kansas, en que la se encuentra?

6 Indique el área correspondiente a la isla de Hawaii

7 Indique el mínimo, máximo, promedio y mediana de la esperanza de


vida (columna Life Exp)
8 Extraer un subconjunto de datos que contenga toda la información
relativa a los todos los estados con población mayor a 10735

9 Al subconjunto anterior estime los promedios de cada variable

También podría gustarte