Introducción a R

0. Objetivo del práctico

El propósito de este práctico es familiarizarnos con R y RStudio. R es un lenguaje de programación orientado a objetos, especialmente diseñado para el análisis estadístico y la visualización de datos. RStudio, por otro lado, proporciona un entorno integrado de desarrollo (IDE) que facilita el uso de R ofreciendo numerosas herramientas útiles en un solo lugar.

1. R como calculadora

R no solo es útil para análisis estadísticos complejos, sino también para operaciones matemáticas básicas, que luego nos permitirán trabajr con nuestras variables. A continuación, demostramos cómo usar R como calculadora:

5+2
## [1] 7
5-2
## [1] 3
5/2
## [1] 2.5
5*2
## [1] 10

2. Creación y manipulación de objetos

En R, podemos crear objetos para almacenar datos. A continuación, se muestra cómo asignar un valor a un objeto y cómo interactuar con él

x <- 5

Cómo el objeto queda en el ambiente/environment, después podemos imprimir o llamar al objeto

x
## [1] 5

Podemos crear los objetos que creamos necesarios, esta vez, crearemos un segundo objeto llamado y

y <- 10

Ahora podemos realizar operaciones con nuestros objetos

x + y
## [1] 15
x - y
## [1] -5
x * y
## [1] 50
x / y
## [1] 0.5

También podemos guardar los resultados como objetos

z <- x^2 
z
## [1] 25

3. Operaciones lógicas

También podemos realizar operaciones lógicas. Para establecer una igualdad usamos doble signo ==

x > y 
## [1] FALSE
15 == x + y 
## [1] TRUE
16 > x + y
## [1] TRUE

4. Vectores

Un vector en R es una secuencia de elementos del mismo tipo. Crearemos una variable llamada Edad. Mediante la función concatenar “c()”, podemos crear un objeto que agrupe un conjunto de datos. Para el lenguaje del software esto es un vector, para nosotros una variable, en este caso numérica (numeric): intervalar, continua, cuantitativa.

edad<- c(18,25,33,38,67,25,35,57,99)
summary(edad)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   18.00   25.00   35.00   44.11   57.00   99.00
table(edad)
## edad
## 18 25 33 35 38 57 67 99 
##  1  2  1  1  1  1  1  1
class(edad)
## [1] "numeric"

También podemos realizar operaciones sobre los vectores. R aplicará la operación a cada uno de los elementos del vector y nos devolverá un vector con los resultados.

Si aplicamos

edad/2
## [1]  9.0 12.5 16.5 19.0 33.5 12.5 17.5 28.5 49.5
edad-1
## [1] 17 24 32 37 66 24 34 56 98
edad2<-edad-1 #y guardar los resultados

#También podemos realziar operaciones entre vectores. 
edad/c(1,2)
## Warning in edad/c(1, 2): longitud de objeto mayor no es múltiplo de la longitud
## de uno menor
## [1] 18.0 12.5 33.0 19.0 67.0 12.5 35.0 28.5 99.0

Creación de una variable. “Sexo”. Se sigue la misma lógica. Variable cualitativa y nominal, dicotómica. Tipo “Character” Categorías: H=Hombre; M=Mujer.

sexo<-c("H","H","H","M","H","M","M","M")

summary(sexo)
##    Length     Class      Mode 
##         8 character character
table(sexo)
## sexo
## H M 
## 4 4
class(sexo)
## [1] "character"

También puede expresarse como factor siendo variable dummy (para 1 y 0). Variable cualitativa, nominal.

s<-c(1,1,1,0,1,0,0,0,9)

#SEXO<-factor(s, levels = c(0,1,9), labels = c("Mujer","Hombre")) #importancia de los errores
sexof<-factor(s, levels = c(0,1,9), labels = c("Mujer","Hombre","NC"))

summary(sexof)
##  Mujer Hombre     NC 
##      4      4      1
table(sexof)
## sexof
##  Mujer Hombre     NC 
##      4      4      1

Variable Nivel socioecon?mico. Ordinal, cualitativa. NSE: 1=E, 2=D, 3=C3, 4=C2, 5=C1, 6=AB

p1<-c(1,2,2,3,4,5,5,6,99)

nse<-factor(p1,levels=c(1,2,3,4,5,6),labels=c("E","D","C3","C2","C1","AB"))
table(nse)
## nse
##  E  D C3 C2 C1 AB 
##  1  2  1  1  2  1
summary(nse) #NA son lo perdidos
##    E    D   C3   C2   C1   AB NA's 
##    1    2    1    1    2    1    1

5. Selección de elementos de un objeto

Podemos seleccionar elementos específicos de los vectores

nse[4] #pedimos el cuarto elemento
## [1] C3
## Levels: E D C3 C2 C1 AB
nse[1:3] #los primeros 3
## [1] E D D
## Levels: E D C3 C2 C1 AB
nse[c(1, 3, 5)] #elementos especificos
## [1] E  D  C2
## Levels: E D C3 C2 C1 AB
nse[37] #no existe
## [1] <NA>
## Levels: E D C3 C2 C1 AB
nse[c(T,F)] #Podemos seleccionar con vectores lógicos, en este caso nos dará elemento por medio
## [1] E    D    C2   C1   <NA>
## Levels: E D C3 C2 C1 AB
nse[nse=="AB"] #Seleccionar a los que cumplan ciertas características
## [1] AB   <NA>
## Levels: E D C3 C2 C1 AB
length(nse)
## [1] 9
class(nse)
## [1] "factor"

6. Listas

Para agrupar elementos de distintos tipos en un objeto debemos utilizar listas. Un caso particular de las listas, como veremos son los data frame o marcos de datos (comunmente llamados bases de datos).

x <- list(u=c(2,3,4), v="abc")
x #el elemento u de la lista es un vector con 3 números, y el elemento v es abc
## $u
## [1] 2 3 4
## 
## $v
## [1] "abc"

Existen distintas formas de selecciones elementos de una lista, a partir del nombre de cada elemento con el operador $, o a partir de su posición dentro de la lista, ocupando corchetes dobles.

x$u
## [1] 2 3 4
x[[2]]
## [1] "abc"
x[[1]][2]
## [1] 3
str(x) #este comando muestra la estructura de un objeto de manera resumida
## List of 2
##  $ u: num [1:3] 2 3 4
##  $ v: chr "abc"

7. Data frames

Un data frame es una tabla en la que cada columna es un vector de valores del mismo tipo. Los data frames son fundamentales para el manejo de datos en R.

base<-data.frame(edad,
           sexof,
           nse)

base
##   edad  sexof  nse
## 1   18 Hombre    E
## 2   25 Hombre    D
## 3   33 Hombre    D
## 4   38  Mujer   C3
## 5   67 Hombre   C2
## 6   25  Mujer   C1
## 7   35  Mujer   C1
## 8   57  Mujer   AB
## 9   99     NC <NA>

Ver nombre de las columnas (variables)

colnames(base)
## [1] "edad"  "sexof" "nse"

Cambiar nombre de las columnas (variables)

colnames(base)<-c("edad","sexo","nse")

Podemos seleccionar variables con el operador $

base$edad #base$variable
## [1] 18 25 33 38 67 25 35 57 99

Tambien podemos usar corchetes base[filas,columnas]

base[5,2]
## [1] Hombre
## Levels: Mujer Hombre NC
base[1:5,2]
## [1] Hombre Hombre Hombre Mujer  Hombre
## Levels: Mujer Hombre NC
base[1:5,c(1,3)]
##   edad nse
## 1   18   E
## 2   25   D
## 3   33   D
## 4   38  C3
## 5   67  C2

Sobre una columna podemos seleccionar elementos como un un vector

base$edad[1]
## [1] 18
base$edad[base$sexo=="Hombre"] #podemos usar condiciones lógicas
## [1] 18 25 33 67

Funciones útiles y manejo de datos R ofrece numerosas funciones para el análisis y manejo de datos, en las cuales iremos profundizando a lo larago del curso. Aquí introducimos algunas básicas.

head(base)  #entrega los primeros elementos
##   edad   sexo nse
## 1   18 Hombre   E
## 2   25 Hombre   D
## 3   33 Hombre   D
## 4   38  Mujer  C3
## 5   67 Hombre  C2
## 6   25  Mujer  C1
View(base) #Permite ver la base
str(base) #Nos muestra la estructura de un objeto
## 'data.frame':	9 obs. of  3 variables:
##  $ edad: num  18 25 33 38 67 25 35 57 99
##  $ sexo: Factor w/ 3 levels "Mujer","Hombre",..: 2 2 2 1 2 1 1 1 3
##  $ nse : Factor w/ 6 levels "E","D","C3","C2",..: 1 2 2 3 4 5 5 6 NA
table(base$sexo) #tabla de frecuencias
## 
##  Mujer Hombre     NC 
##      4      4      1
help(table) #ayuda sobre una función
## starting httpd help server ... done
?table #Equivalente a lo anterior

mean(base$edad)
## [1] 44.11111

Podemos guardar la base de datos

save(base, file = "base.RData") #Se indica primero el objeto a guardar 
                            #y luego el nombre del archivo, entre comillas.

8. Limpieza del entorno de trabajo

Es importante mantener un entorno de trabajo organizado, guardando y eliminando objetos según sea necesario. Podemos hacer esto a partir de la función remove().

remove(edad) #borrar un objeto particular
remove(list = ls()) #Borrar todo
Previous