2  Introducción al análisis de datos con R

2.1 La sintaxis de las funciones

En R las funciones presentan la estuctura function(arg1, arg2,..., opt1, opt2,..), donde los argumentos deben especificarse obligatoriamente (arg) y las opciones, solo si se desean cambiar de la opción por defecto. Por ejemplo, la función exponencial \(e^x\), se escribe como exp(x) y la función logarítmo natural \(\ln(x)\) como log(x). Ahora bien, en la función \(\ln(x)\) está la opción de usar una base distinta a la del logarítmo natural, por tanto, si se ocupa una base distinta, solamente se introduce como una entrada adicional de la función.

e<- exp(1)
log ( e ); log( 8, 2)
[1] 1
[1] 3

Nota: Se recomienda utilizar objetos para guardar resultados que se van a utilizar varias veces en el trabajo. Por ejemplo, en el caso anterior se guardó el valor de exp(1) en el objeto e.

2.2 Las variables

En R las variables se generan con la función c(x1, x2, x3,...). Los principales formatos de las variables son los siguientes:

  • Numérica: Los elementos de la variable son números.
  • Caracter: La variable contiene elementos no numéricos.
  • Factor: La variable contiene elementos no numéricos y los posibles valores tienen un orden preasignado.
jug<-c("Lionel Messi","Luis Suárez","Antoine Griezmann","Arturo Vidal","Ansu Fati", "Otros")
goles<-c(25,16,9,8,7,19)

class(jug); class(goles)
[1] "character"
[1] "numeric"

Para construir un factor hay que indicarle al programa que la variable generada es un factor y se le deben indicar los niveles

jugador<-  factor(jug, levels=jug)
class(jugador)
[1] "factor"

Los elementos especificos de una variable se pueden llamar con la sintaxis var[posición].

jug[3] 
[1] "Antoine Griezmann"

Algunas sintaxis para construir variables numéricas útiles son las siguientes:

  • Números consecutivos de \(a\) hasta \(b\): a:b
  • Repetir un número \(a\), \(n\) veces: rep(a, n)
  • Secuencia \(a, a+n, a+2n, a+3n,...\) hasta \(b\): seq(a, b, n)
  • Generar \(n\) números aleatorios del conjunto de \(a\) hasta \(b\): sample(a:b, n)
1:10
 [1]  1  2  3  4  5  6  7  8  9 10
rep(5,10)
 [1] 5 5 5 5 5 5 5 5 5 5
seq(1,10,2)
[1] 1 3 5 7 9
sample(1:10, 5) 
[1] 3 4 5 6 1

2.3 Conjuntos de datos

Los conjuntos de datos se generan con la función data.frame(v1, v2, v3,...).

Gol_Barc<-  data.frame(jug, goles)
Gol_Barc
                jug goles
1      Lionel Messi    25
2       Luis Suárez    16
3 Antoine Griezmann     9
4      Arturo Vidal     8
5         Ansu Fati     7
6             Otros    19
class(Gol_Barc); names(Gol_Barc)
[1] "data.frame"
[1] "jug"   "goles"

Los elementos especificos de una variable se pueden llamar con la sintaxis data.frame[pos_x, pos_y].

Gol_Barc[1,1]
[1] "Lionel Messi"
Gol_Barc[ 1, ]  # llama la fila 1
           jug goles
1 Lionel Messi    25
Gol_Barc[ , 1]  #llama la columna 1
[1] "Lionel Messi"      "Luis Suárez"       "Antoine Griezmann"
[4] "Arturo Vidal"      "Ansu Fati"         "Otros"            

2.4 Importación de los datos

El software R posee varias funciones para cargar bases de datos. En particular, si la base proviene de un archivo .csv, se puede recurrir a la función read.csv(data.frame_lab, sep= ). Para utilizar esta función se requiere indicarle al software la carpeta dónde se ubica el conjunto, por medio de la siguiente secuencia con el menú del software: session/set worwing directory/choose directory; posteriormente, se escribe el nombre del conjunto de de datos data.frame_lab entre comillas, en el espacio correspondiente de la función.

Los datos de la base sobre países se puede cargar con la siguiente instrucción:

BASE<-read.csv("Paises.csv",sep=";") # donde sep es la opción para especificar el separador de datos que utiliza el csv, por default es una coma.
class(BASE);names(BASE)
[1] "data.frame"
 [1] "cod"         "name"        "area"        "pob"         "HDIrank21"  
 [6] "hdi_2021"    "le_2021"     "Sch_exp21"   "Sch_mean21"  "GNI_pc21"   
[11] "GNIminHDI21" "HDIrank20"   "region"      "hdi_2010"    "hdi_2011"   
[16] "hdi_2012"    "hdi_2013"    "hdi_2014"    "hdi_2015"    "hdi_2016"   
[21] "hdi_2017"    "hdi_2018"    "hdi_2019"    "hdi_2020"    "le_2010"    
[26] "le_2011"     "le_2012"     "le_2013"     "le_2014"     "le_2015"    
[31] "le_2016"     "le_2017"     "le_2018"     "le_2019"     "le_2020"    

Las variables de la base se pueden llamar de dos maneras:

  • Con la función attach(data.frame), lo cual permitirá que las variables estén disponibles en la plataforma con solo escribir su nombre.
  • Con la sintaxis data.frame$var.

De esta manera, para llamar a la variable name de la base de datos llamado BASE, se puede recurrir a esta función:

#caso1
attach(BASE)
x<-name
#caso 2
x<-BASE$name
head(x)
[1] "Afghanistan"          "Angola"               "Albania"             
[4] "Andorra"              "United Arab Emirates" "Argentina"           

2.5 Exploración de la base de datos

Una vez cargada la base de datos se pueden explorar las variables del conjunto de datos. Para iniciar esta exploración se puede consultar la dimensión de la base y los nombres de las variables.

dim(BASE); names(BASE)
[1] 195  35
 [1] "cod"         "name"        "area"        "pob"         "HDIrank21"  
 [6] "hdi_2021"    "le_2021"     "Sch_exp21"   "Sch_mean21"  "GNI_pc21"   
[11] "GNIminHDI21" "HDIrank20"   "region"      "hdi_2010"    "hdi_2011"   
[16] "hdi_2012"    "hdi_2013"    "hdi_2014"    "hdi_2015"    "hdi_2016"   
[21] "hdi_2017"    "hdi_2018"    "hdi_2019"    "hdi_2020"    "le_2010"    
[26] "le_2011"     "le_2012"     "le_2013"     "le_2014"     "le_2015"    
[31] "le_2016"     "le_2017"     "le_2018"     "le_2019"     "le_2020"    

Luego, se puede generar una base con solo las variables de interés

BASEn<- BASE[, c(2, 3, 4)] # Seleccionar name, area y pob

Una primera exploración de las variables de la base puede realizarse con la función apply(.df, 2, fun= , na.rm = ). En fun se pueden agregar distintas funciones que sean de utilidad, en particular, observar el mínimo y el máximo permiten observar de entrada si hay problemas de codificación. La opción na.rm se fija en T (true) para indicar que ignore los valores perdidos en el cálculo del estadístico.

## Ver el mínimo y el máximo de las variables
apply(BASEn, 2, min, na.rm=T )
         name          area           pob 
"Afghanistan"    "      20"  "     11069" 
apply(BASEn, 2, max, na.rm=T )
        name         area          pob 
  "Zimbabwe"   "17098250" "1411100000" 

Por otro lado, también es importante ver si las funciones poseen muchos valores perdidos. Para esto, se puede utilizar el código siguiente.

## Contar los valores perdidos
na_count <-function(x) {sum(is.na(x))}
apply(BASEn, 2, na_count )
name area  pob 
   0    0    0 

2.6 Funciones de las variables numéricas

Luego de asegurar que las variables estuvieran bien cargadas y tabuladas, se puede pasar a estudiar algunos estadísticos o propiedades básicas de ellas. Por ejemplo:

  • Promedio: mean(var, na.rm=T)
  • Mediana: median(var, na.rm=T)
  • Máximo: max(var, na.rm=T)
  • Mínimo: min(var, na.rm=T)
  • Desviación estándar: sd(var, na.rm=T)
  • Suma de los datos: sum(var, na.rm=T)

En el caso de la variable población (pob), se tienen los siguiente valores:

## Contar los valores perdidos
pob <- BASEn$pob
max(pob, na.rm=T)
[1] 1411100000
mean(pob, na.rm=T)
[1] 39943539
median(pob, na.rm=T)
[1] 8916864
min(pob, na.rm=T)
[1] 11069