Está en la página 1de 16

Guı́a de Clase:

Introducción al R

Resumen:
R es un sofisticado software para el análisis de datos con fuerte soporte estadı́stico. Es un software libre y contiene una
gran cantidad de paquete para distintas áreas de interés. En esta primera clase mostramos la introducción al Software
R cubriendo desde su intalación hasta la descripción de su forma de trabajar mediante el uso de la interfaz gráfica
RStudio. Además, se describe los objetos (vectores, matrices, dataframes y listas), se muestran algunas operaciones
básicas, la importación y exportación de datos, los bucles principales y la creación de funciones.

1 Consultor estadı́stico, Instituto de Planificación y Estudios Estadı́sticos (IPLE)


1. Introducción
2Est. de Estad´ıstica, Universidad Nacional Mayor de San Marcos

R es un lenguaje de programación y un entorno libre para la elaboración de análisis y gráficos estadı́sticos. Puede
compilar y ser ejecutado en diferentes plataformas UNIX, Windows y MacOS. Por software libre, según la Fundación de
Software Libre (http://www.fsf.org), nos referimos a:

• La libertad de ejecutar el programa para cualquier propósito u objetivo.


• La libertad de estudiar como funciona el programa y adecuarlo a nuestras necesidades.
Tener acceso al código es una condición previa.

• La libertad de redistribuir copias y poder ayudar a los colegas.


• La libertad de mejorar el programa y compartir las mejoras al público beneficiando a toda la comunidad.
Tener acceso al código es una condición previa.

Fue creado en Nueva Zelanda en el año 1991 por dos catedráticos, Ross Ihaka y Robert Gentleman, como iniciativa de
querer proporcionar una mejor plataforma estadı́stica a los alumnos. La funcionalidad de R está dividido en una serie de
paquetes. Entre estos, el paquete principal es el llamado base, el cual permite ejecutar R y contiene las funciones más
fundamentales. Actualmente, gracias al esfuerzo de toda la comunidad de usuarios, R posee más de 4000 paquetes. La última
versión de R fue lanzada recientemente, el 21/06/2016, que es R.3.3.1 (Bug in your hair).

RStudio es una potente, amigable y libre interface de R para el usuario. Cabe resaltar que es necesario tener una
versión instalada de R para poder utilizar RStudio.

1
Introducción al R

2. Instalación del R y
RStudio Instalando R
Paso 1 Ir a la página oficial de R (http://cran.r-project.org/) y seleccionar el sistema operativo de su PC.

Paso 2 Seleccionar “Instalar R por primera vez”.

Paso 3 Seleccionar “Descargar R 3.3.1 para Windows”.

Paso 4 Ejecutar el archivo descargado R-3.3.1-win.exe.

Instalando RStudio
Paso 1 Ir a la página oficial de RStudio (http://www.rstudio.com/) y seleccionar la primera opción.

Paso 2 Seleccionar “RStudio Desktop’.

Paso 3 Seleccionar “Descargar RStudio Desktop’.

Paso 4 En la nueva ventana, seleccionar RStudio 0.99.902 - Windows Vista/7/8/10.

Paso 5 Ejecutar el archivo descargado RStudio-0.99.902.exe.

3. Interfaz del RStudio


Existen tres paneles importantes en la interfaz de RStudio como se muestra en la imagen.
1. La consola donde se ejecuta el código.
2. La salida donde se muestran los resultados gráficos.
3.El editor donde se escribe comandos R más complejos.

Además, se recomienda utilizar los siguientes cuatro métodos abreviados en el RStudio para ahorrar tiempo.

usuarios Mac, utilizar Cmd + Enter.


Tab: Sugiere posibles terminaciones para el texto que se ha escrito.
Ctrl + ↑: En la consola, busca todos los comandos que se ha escrito anteriormente. Para usuarios Mac,
utilizar Cmd + ↑.
texto te

UNMSM -2017(2) 2
Introducción al R

getwd() y setwd()
R siempre está referido a un directorio de trabajo de la computadora. Para saber cual es dicho directorio se debe ejecutar
la función getwd(), la cual no requiere ningún argumento.

getwd()

## [1] "D:/UNMSM/PROYECTOS R/Modelos"

Si se desea cambiar de directorio, se debe utilizar la función setwd() especificando la ubicación.

setwd("D:/UNMSM")

getwd()

## [1] "D:/UNMSM"

Trabajando con Proyectos


Muchas veces resulta más sencillo y ordenado trabajar con proyectos en RStudio, donde cada uno posee su propio
directorio, workspace, scripts e historial. Para crear un nueveo proyecto, se debe hacer click en File - New Project ,
luego elegir el nombre y ubicación.

Instalación de Paquetes
Existen tres maneras principales de instalar un paquete en R.

1. Instalación desde el CRAN: Instalarlo directamente del repositorio.


• Desde el RStudio, Tools - Install Packages
• Desde la consola, install.packages("Name of the package")
2. Instalación desde la Fuente: Primero se debe de descargar el paquete y luego cargarlo al
R. 3.Instalación desde una repositorio control como Github o Bitbucket:
Para mayor detalles, revisar https://github.com/hadley/devtools.

Documentación
La documentación es un aspecto muy importante de todos los paquetes, ya que permite al usuario conocer como funciona
el paquete y sus funciones. R proporciona información útil sobre el uso de las funciones incluidas en los diferentes paquetes a
través de ciertos comandos de ayuda.

# Ayuda sobre la función lm


?lm
help("lm")
help(lm)

Además, existe una lista grande de documentación sobre R en la página oficial del software (http://cran.r-project.org/).

Por otro lado, si se tienen consultas más especı́ficas sobre la parte de programación, se puede recurrir a la página web Stack
Overflow (http://stackoverflow.com). En cambio, si las dudas van más enfocadas al análisis de datos, minerı́a de datos,
machine learning, visualización o ciencia de datos, se recomienda recurrir a la página web Cross Validated
(http://stats.stackexchange.com).

UNMSM -2017(2) 3
Introducción al R

4. Tipos de Datos ## [1] "logical"


R tiene 5 clases básicas de datos: entidad<-"Privada" #character
• Numeric (Números reales) entidad

• Integer ## [1] "Privada"


• Complex class(entidad)
• Logical (Verdadero/Falso)
## [1] "character"
• Character (caracteres, palabras)
El caracter # indica comentario. Todo lo que se encuentre
Toda la funcionalidad de R es en base a objetos, los cuales
a su derecha es ignorado.
pueden guardar información y ejecutar funciones sobre los
datos. Un aspecto importante de los objetos, a parte de la
información que contienen, es el nombre que se les otorga.
Es recomendable dar un nombre significativo para no olvi- Atributos de un objeto
dar lo que contiene. El sı́mbolo especial <- permite asig- Una objeto definido en el entorno R tiene ciertos atributos
nar la información al objeto. Además, se puede utilizar la tales como:
función class() para identificar el tipo de objeto.
• Nombre, nombre de las dimensiones
A continuación, se muestran ejemplos de lo expuesto:
• dimensiones (vectores, matrices, arreglos)
peso<-1.5 #numeric
• clase
peso
• longitud
## [1] 1.5
• Otros atributos definidos por el usuario
class(peso)
Para acceder a éstos, se puede utilizar la función attributes().
## [1] "numeric"

n<-15 #integer
5. Tipos de Objetos
n
en R 5.1Vectores
## [1] 15 El objeto más básico es el vector, un conjunto de datos de
la misma clase. c() es usado para crear vectores, además se
class(n) pueden crear vectores vacı́os con la función vector(). El
operador : permite crear una secuencia de datos enteros.
## [1] "numeric"

z<-1+2i #complex entidad<-c("Privado","Público") #character


z entidad

## [1] 1+2i ## [1] "Privado" "Público"

class(z) class(entidad)

## [1] "complex" ## [1] "character"

resp<-(1==2) #logical length(entidad)


resp
## [1] 2
## [1] FALSE
peso<-c(1.5,1.3,1.7) #numeric
class(resp) peso

UNMSM -2017(2) 4
Introducción al R

## [1] 1.5 1.3 1.7 un vector con la función names(). Esto permite entender
mejor a lo que refiere cada elemento.
class(peso)

## [1] "numeric"

length(peso)

## [1] 3

y<-5:7 #integer
y Valores Especiales
## [1] 5 6 7 Existen casos especiales en los números, 0/0, 1/0, -1/0.

class(y) 0/0

## [1] "integer" ## [1] NaN

length(y) 1/0

## [1] 3 ## [1] Inf

z<-c(1+2i,1+3i,1+4i) #complex -1/0


z
## [1] -Inf
## [1] 1+2i 1+3i 1+4i

class(z) Mezclando objetos


## [1] "complex" Cuando mezclamos objetos en un vector, R automáticamente
define una clase en común según el dominio de cada uno en el
length(z) siguiente orden:
## [1] 3 1.character

resp<-entidad=="Privado" #logical 2.complex


resp
3.numeric
## [1] TRUE FALSE 4.integer
class(resp) 5.logical
## [1] "logical"
y<-c(1.7,"a") # character
# Vector Vacı́o y<-c(TRUE,2) #numeric
nullvector<-vector("numeric",length=10) y<-c("a",TRUE) #character
nullvector

## [1] 0 0 0 0 0 0 0 0 0 0
Coercion explı́cita
class(nullvector) Los objectos pueden ser forzados a cambiar de tipo de clase
usando la función as.*.
## [1] "numeric"

Adicionalmente, se puede dar nombre a los elementos de

UNMSM -2017(2) 5
Introducción al R

x<-0:6 ## [1] TRUE


class(x)
is.nan(x)
## [1] "integer"
## [1] FALSE
as.numeric(x)
y<-0/0
## [1] 0 1 2 3 4 5 6 y

as.logical(x) ## [1] NaN

## [1] FALSE TRUE TRUE TRUE TRUE TRUE TRUE is.na(y)

as.character(x) ## [1] TRUE

## [1] "0" "1" "2" "3" "4" "5" "6" is.nan(y)

as.complex(x) ## [1] TRUE

## [1] 0+0i 1+0i 2+0i 3+0i 4+0i 5+0i 6+0i

Cuando el cambio de clase es incoherente, se convierte en


5.2Matrices
un dato perdido NA (Not Available). Una matriz es un arreglo con cierto número de filas y de
columnas. Al igual que un vector, las matrices deben con-
tener elementos de la misma clase. Este tiene el atributo
dimensión.

## NA NA

## [,1] [,2] [,3]


## NA NA ## [1,] 1 3 5
## [2,] 2 4 6

Valores perdidos
Existen dos tipos de datos perdidos en R.
• NA (Not available), el valor no está disponible o está
perdido.
## $dim
• NaN (Not a number), valor perdido debido a opera-
ciones matemáticas no definidas.

## NA ## [,1] [,2] [,3]


## [1,] 1 2 3
## [2,] 4 5 6

UNMSM -2017(2) 6
Introducción al R

# Inclusión de datos por columna ## [,1] [,2] [,3]


data<-matrix(1:6,nrow=2,ncol=3,byrow=FALSE) ## vec1 7 5 9
data ## vec2 2 2 3

## [,1] [,2] [,3] rownames(proceso)<-c("Dinámica","Entrevista")


## [1,] 1 3 5 colnames(proceso)<-c("Lunes","Martes","Jueves")
## [2,] 2 4 6 proceso

# Una matriz a partir de un vector ## Lunes Martes Jueves


data<-seq(from=1,to=23,by=2) ## Dinámica 7 5 9
dim(data)<-c(3,4) ## Entrevista 2 2 3
data

## [,1] [,2] [,3] [,4]


5.3Factores
## [1,] 1 7 13 19
## [2,] 3 9 15 21 Los factores son un tipo de dato estad´ıstico usado para al-
## [3,] 5 11 17 23 macenar variables categóricas. Es importante R reconozca
si trabaja con variables categóricas puesto que los modelos
estadı́sticos que se enseñará posteriormente los tratan de
un modo particular. Las etiquetas para los factores son
cbind() y rbind()
más recomendables de utilizar que la numeración. Por
Las matrices también pueden ser creadas con estas dos fun- ejemplo, considerando la variable Género, es mejor (“Fe-
ciones, ya que se pueden ver como una combinación de vec- menino”,“Masculino”) que (1,2).
tores colocados una al lado del otro ya sea por columna o
por fila.

## x y

## x 2 3 4 5 6
## y 1 2 3 4 5
## 3 3

rownames y colnames
Al igual que los vectores, se le pueden dar nombres a las
filas y columnas de una matriz. ## 1 2 1 1 22

UNMSM -2017(2) 7
Introducción al R

tintos tipos de objetos. Cada columna representa una vari-


able o caracterı́stica como Peso, Sexo, Edad, Educación;
además cada una de las caracterı́sticas es del mismo tipo.
Data Frames son usualmente creados con data.frame(),
read.table() y read.csv(). Por otro lado, data.matrix()
puede convertirlo en una matriz.

## id a~
no tempo temp_prom
## 1 1 2010 verano 21
## 2 2 2010 oto~no 18
## 3 3 2010 verano 24
## 4 4 2011 oto~no 19

## Levels: F M

Asimismo, se debe diferenciar entre las variables categóricas


nominales y ordinales. La primera no implica un orden de-
terminado, mientras que la segunda s´ı.
## 1 1 2010 verano 21

Per
Per

2010:3
2011:1
Median :20.00
5.4 Data Frames Mean
Es la manera en que se almacena una base de datos que con-
tienen perfiles y variables, las variables pueden ser de dis- Max.

UNMSM -2017(2) 8
Introducción al R

Aplicando la función str() se puede saber rápidamente la ## [[1]]


estructura de la base de datos. ## [1] 1 2 3 4 5 6 7 8 9 10
##
str(clima) ## [[2]]
## [,1] [,2] [,3]
## 'data.frame': 4 obs. of 4 variables:
## $ id : int 1 2 3 4 ## [1,] 1 4 7
[2,] 2 5 8
1 1 12
##
## $ a~no : Factor w/ 2 levels "2010","2011":no": 2 1 2 1[3,] 3 6 9
##
## $ tempo : Factor w/ 2 levels "oto~ no","vera
## [[3]]
## $ temp_prom: num 21 18 24 19
##
## mpg cyl disp hp
## Mazda RX4 21.0 6 160.0 110
5.5 Listas ## Mazda RX4 Wag 21.0 6 160.0 110
## Datsun 710 22.8 4 108.0 93
Es similar a un vector, con la diferencia que este puede
## Hornet 4 Drive 21.4 6 258.0 110
contar con elementos de distintas clases y de diferentes di-
## Hornet Sportabout 18.7 8 360.0 175
mensiones.
## Valiant 18.1 6 225.0 105
## Duster 360 14.3 8 360.0 245
## Merc 240D 24.4 4 146.7 62
## Merc 230 22.8 4 140.8 95
## Merc 280 19.2 6 167.6 123

Para añadir nombres a los objetos pertenecientes a una


lista, existen dos maneras. La primera es especificando el
nombre dentro de la función list() y la segunda utilizando
la función names() después de haber creado la lista.

FALSE

4 5 6 7 8 9 10

## [2,] 2 5 8
## [3,] 3 6 9
##
vec
$datos
mpg
## Datsun 710 22.8 4 108.0 93
## Hornet 4 Drive 21.4 6 258.0 110
## Hornet Sportabout 18.7 8 360.0 175
## Valiant 18.1 6 225.0 105
## Duster 360 14.3 8 360.0 245
## Merc 240D 24.4 4 146.7 62
## Merc 230 22.8 4 140.8 95
## Merc 280 19.2 6 167.6 123

UNMSM -2017(2) 9
Introducción al R

4 5 6 7 8 9 10

6.1Indexación por vectores


1. Enteros positivos, indica los valores a ser selecciona-
## [1,] 1 4 7 dos.
## [2,] 2 5 8
## [3,] 3 6 9 2. Enteros negativos, indica los valores a ser
## exclu´ıdos. 3.Lógicos, los valores verdaderos (TRUE)
## $datos
## mpg son selec-
cionados.
4.Cadena de caracteres, indica el nombre de la variable
que contiene los elementos a ser seleccionados.
## Datsun 710 22.8 4 108.0 93
## Hornet 4 Drive 21.4 6 258.0 110 meses<-c("Ene","Feb","Mar","Abr",
## Hornet Sportabout 18.7 8 360.0 175 "May","Jun","Jul")
## Valiant 18.1 6 225.0 105 names(meses)<-c("m1","m2","m3","m4","m5",
## Duster 360 14.3 8 360.0 245 "m6","m7")
## Merc 240D 24.4 4 146.7 62 meses
## Merc 280
## Merc 230 22.8 4 140.8 95

6. Subsetting
Muchas veces en nuestros análisis debemos seleccionar un
subconjunto especı́fico de un vector, una matriz, un data
frame o una lista. Esto se puede hacer con los siguientes
operadores:

• [], el corchete simple devuelve un objeto de la misma


clase que el original. Se usa también para seleccionar
más de un elemento.
• [[]], el corchete doble se usa para extraer elementos
de un data frame o lista.
• $, el dólar se usa para extraer elementos de un data
frame o lista por nombre.

UNMSM -2017(2) 10
Introducción al R

También se puede hacer uso de los operadores lógicos para 2


seleccionar un subconjunto de datos.

<, menor que


>, mayor que
<=, menor o igual que

>=, mayor o igual que

!=, diferentes

6.3Subsetting en un Data Frame

## FALSE FALSE FALSE FALSE

ametro

## [1] 24.5 26.0 27.5 ## nombre terrestre diámetro


## 1 Mercurio si 0.382
# Operador Lógico O ## 2 Venus si 0.949
ind<-(x<15)|(x>23) ## 3 Tierra si 1.000
x ## 4 Marte si 0.532
## 5 Júpiter no 11.209
## [1] 20.0 21.5 23.0 24.5 26.0 27.5 29.0 ## 6 Saturno no 9.449
## 7 Urano no 4.007
## 8 Neptuno no 3.883
6.2 Subsetting en una Matriz
Se pueden obtener subconjuntos de la matriz por medio de
la manera usual con los ´ındices [i,j].

##

UNMSM -2017(2) 11
Introducción al R

ametro

6.4Subsetting en una Lista

$sexo

7. Operaciones Básicas

## 1 4 9 16 25 36

$sexo

UNMSM -2017(2) 12
Introducción al R

min(x_vector_nuevo) # Mı́nimo valor del vector 8. Importación y Exportación de Datos


## [1] 2 8.1 read.table() y write.table()
max(x_vector_nuevo) # Máximo valor del vector El siguiente código guardará el data frame creado anterior-
## [1] 37 mente llamado planetas.

mean(x_vector_nuevo) # Media del vector

## [1] 16.16667 Ahora, vamos a cargar una base de datos de delicuentes que
w<-c(2,9,5,6) han cometido crimenes menores, los cuales fueron puestos
z<-c(4,7,3,8) en un programa que involucraba conocer a sus v´ıctimas. Si
el programa ha funcionado, los delicuentes no vuelven ha
w+z # Suma elemento por elemento cometer el acto el año próximo. Para esto, empleamos el
siguiente código.
## [1] 6 16 8 14
w*z # Multiplicación elemento por elemento
## [1] 8 63 15 48
w/z # División elemento por elemento

## [1] 0.500000 1.285714 1.666667 0.750000


w<z ## $ sex : int 1 11 1 11 1 11 1 ...
## $ age : int 22 29 19 22 18 26 16 17 46 19 ...
## [1] TRUE FALSE FALSE TRUE
## $ prev : int 2 01 0 00 0 00 2 ...
w==z ## $ scheme: int 1 11 1 11 1 11 1 ...
## $ reoff : int 0 11 0 00 1 10 1 ...
## [1] FALSE FALSE FALSE FALSE
x_matriz<-matrix(3:6,2,2)
x_matriz ## sex age prev scheme reoff
## [,1] [,2] ## 1 1 22 2 1 0
## 2 1 29 0 1 1
## [1,] 3 5
## 3 1 19 1 1 1
## [2,] 4 6
## 4 1 22 0 1 0
y_matriz<-matrix(1:4,2,2) ## 5 1 18 0 1 0
y_matriz ## 6 1 26 0 1 0

## [,1] [,2] Según la estructura de los datos, todas las variables son de
## [1,] 1 3 clase integer. Sin embargo, la variable sex, scheme y reoff
## [2,] 2 4 no pertenecen a esta clase y se deben convertir a factor.
x_matriz*y_matriz # Elemento por elemento criminales$sex<-as.factor(criminales$sex)
levels(criminales$sex)
## [,1] [,2]
## [1,] 3 15 ## [1] "0" "1"
## [2,] 8 24
levels(criminales$sex)<-c("Femenino","Masculino")
x_matriz y_matriz # Verdadera multiplicación
criminales$scheme<-as.factor(criminales$scheme)
## [,1] [,2] levels(criminales$scheme)<-c("no","si")
## [1,] 13 29 criminales$reoff<-as.factor(criminales$reoff)
## [2,] 16 36 levels(criminales$reoff)<-c("no","si")

UNMSM -2017(2) 13
Introducción al R

Algunas funciones importantes que se debe mencionar son


head(criminales) ls() y rm("variable"), que sirven para listar todos los
objetos existentes en el espacio de trabajo y para remover
## sex age prev scheme reoff ciertos objetos que especifique el usuario del espacio de tra-
## 1 Masculino 22 2 si no bajo, respectivamente.
## 2 Masculino 29 0 si si
## 3 Masculino 19 1 si si
## 4 Masculino 22 0 si no 9. Bucles
## 5 Masculino 18 0 si no
## 6 Masculino 26 0 si no R posee diferentes estructuras de control al igual que otros
lenguajes de programación.

8.2 read.csv() y read.csv2() 9.1For


Sirve para repetir tareas una y otra vez.
Estas funciones se utilizan para leer hojas de cálculo con
extensión .csv (Comma Separated Values). La diferencia de Sintaxis:
las funciones radica en que el primero tine como sı́mbolo
de separación una coma (,), mientras que el segundo un
punto y coma (;).

header

## FC.basal FC.6
## 1 84.2697 91.4634
## 2 84.2697 91.4634
## 3 84.0619 91.1834
## 4 85.6542 91.8788
## 5 87.2093 91.1772
## 6 87.1246 89.7992

8.3 read.xls()
Esta función sirve para leer archivos Excel (extensión .xls
o .xlsx) guardar la información en un data frame en el R.

8.4 R Workspace ## [1] "Lunes"


## [1] "Martes"
Al finalizar la sesión de R, aparecerá una ventana consul-
## [1] "Jueves"
tado si se desea guardar los datos de la actual sesión. Si
la respuesta es afirmativa, se creará un archivo conteniendo
todos los objetos R que se tienen en la sesión actual, además
de los últimos diez o más comandos que se tipearon. Esto 9.2 If
es lo que se llama R Workspace y contiene toda la in- Sirve para evaluar condiciones y tomar una decisión.
formación necesaria para reiniciar la sesión exactamente
donde se hab´ıadejado.

UNMSM -2017(2) 14
Introducción al R

como las funciones ya incorporadas en el software.


Sintaxis:

Sintaxis:

b<-num^2

Las funciones generalmente devuelven un objeto que fue el


resultado de ejecutar el cuerpo de la función. En el ejemplo
anterior devuelve b.

mi_potencia(num)

## 1 4 9 16 25 36

num<-5

10. Funciones
Las funciones son creadas usando function(). La ver-
dadera fortaleza de R es la facilidad con la que el usuario
puede escribir nuevas funciones que pueden ser accedidas

UNMSM -2017(2) 15
Introducción al R

Recursos Adicionales
[1]Santiago Benitez-Vieyra. Introducción al Lenguage R. Modelos Lineales y Fundamentos de Programación, 2010.
URL https://github.com/santiagombv/cursoR.
[2]O’Reilly. Try R. URL http://tryr.codeschool.com/levels/1/challenges/3.
[3]Roger D. Peng. R Programming for Data Science. Leanpub, 2015.

[4]Phil Spector. Data Manipulation with R. Springer Verlag, New York, 2008.

UNMSM -2017(2) 16

También podría gustarte