1 Carga de librerías

Una librería (o paquete) es una colección de funciones, datos y documentación que amplía las capacidades básicas del lenguaje. R viene con un conjunto de funciones por defecto, pero muchas tareas especializadas (como análisis estadístico avanzado, visualización, minería de datos, etc.) requieren librerías adicionales.

Ejemplo:

library(dplyr)
library(readxl)

2 Creación de objetos

La creación de objetos se refiere al proceso de asignar un valor (como un número, vector, función, etc.) a un nombre que luego puedes usar para referirte a ese valor en tu código.

2.1 Escalares

Es la representación mas simple de un número real (\(R^1\))

Ejemplo:

escalar1 <- 3
escalar1
## [1] 3
escalar2 <- 4
escalar2
## [1] 4

2.2 Operaciones

El motor de programación R puede servir como una calculadora

Ejemplo:

escalar1 + escalar2
## [1] 7
escalar3 <- escalar1 + escalar2
escalar3
## [1] 7
escalar4 <- escalar3 * escalar2
escalar4
## [1] 28
escalar5 <- escalar4/escalar1
escalar5
## [1] 9.333333
summary(escalar5)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   9.333   9.333   9.333   9.333   9.333   9.333
table(escalar5)
## escalar5
## 9.33333333333333 
##                1

2.3 Vectores

Es una colección de elementos del mismo tipo (por ejemplo, todos números, todos caracteres, todos lógicos, etc.).

vect1 <- c(2,1.5,4) #vector numerico
vect1
## [1] 2.0 1.5 4.0
vect2 <- c("Juan","Pedro","Sara") #vector caracteres
vect2
## [1] "Juan"  "Pedro" "Sara"
vect3 <- c(5,6,2)
vect3
## [1] 5 6 2
prd1 <- vect1 *escalar4
prd1
## [1]  56  42 112

2.4 Ubicacion

Sirve para acceder a un elemento del vector por su posición o índice.

vect1[2]
## [1] 1.5
vect2[3]
## [1] "Sara"
objeto1 <- vect3[1]
objeto1
## [1] 5
objeto2 <- vect2[2:3]
objeto2
## [1] "Pedro" "Sara"
objeto3 <- vect2[1:2]
objeto3
## [1] "Juan"  "Pedro"
objeto4 <- vect2[c(1,3)]
objeto4
## [1] "Juan" "Sara"
objeto4_f2 <- vect2[-2]
objeto4_f2
## [1] "Juan" "Sara"

2.5 Matrices

Una matriz es una estructura de datos bidimensional que contiene elementos del mismo tipo (por ejemplo, todos numéricos o todos caracteres), organizados en filas y columnas.

vector1 <- c(1,2,3)
vector2 <- c(4,5,6)
vector3 <- c(7,8,9)

matrizA <- cbind(vector1,vector2,vector3)
matrizA
##      vector1 vector2 vector3
## [1,]       1       4       7
## [2,]       2       5       8
## [3,]       3       6       9
matrizB <- rbind(vector1,vector2,vector3)
matrizB
##         [,1] [,2] [,3]
## vector1    1    2    3
## vector2    4    5    6
## vector3    7    8    9

2.6 Bases de datos (data frames)

Una base de datos se representa comúnmente como un data frame. Es una de las estructuras más utilizadas para trabajar con datos tabulares, parecida a una hoja de cálculo de Excel

base1 <- as.data.frame(matrizA)
base1
##   vector1 vector2 vector3
## 1       1       4       7
## 2       2       5       8
## 3       3       6       9
base2 <- as.data.frame(matrizB)
base2
##         V1 V2 V3
## vector1  1  2  3
## vector2  4  5  6
## vector3  7  8  9

2.6.1 Ingresar a objetos en bases de datos (tomar variables con $)

Cuando trabajas con una base de datos (es decir, un data.frame), puedes acceder a sus columnas individuales usando el operador $. Este operador te permite extraer una variable específica por su nombre.

base1$vector1
## [1] 1 2 3

2.6.2 Cambiar de nombre a variables

Para cambiar el nombre de una variable (columna) en un data.frame en R usamos:

nombre_vectores <- c("variable1","variable2","variable3")

names(base1) <- nombre_vectores
base1
##   variable1 variable2 variable3
## 1         1         4         7
## 2         2         5         8
## 3         3         6         9

2.6.3 Cargar bases de datos internas

Puedes acceder a bases de datos internas que vienen incluidas con el propio lenguaje o con paquetes específicos. Estas bases de datos son muy útiles para practicar, hacer pruebas o aprender funciones de análisis.

base <- mtcars
base
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
## Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2

2.6.4 Filtros

Los filtros te permiten seleccionar filas específicas de un data.frame que cumplen con ciertas condiciones. Es una herramienta clave para el análisis de datos.

Ejemplo:

Vehiculos con mas de 4 cilindros

2.6.4.1 Forma subset

base1 <- subset(base,base$cyl > 4)

2.6.4.2 Forma (matricial)

base1_f2 <- base[base$cyl>4,]

2.6.4.3 Forma (dplyr)

Instalamos el paquete:

install.packages(“dplyr”)

Luego instalamos la libreria:

library(dplyr)

Y Realizamos el filtro

base1_f3 <- base %>% 
  filter(cyl>4)

2.6.4.4 Ejemplo 2 de filtro

Vehiculos con 4 cilindros o mas

base2 <- subset(base,base$cyl >=4)

2.6.4.5 Ejemplo 3 de filtro

Vehiculos con mas de 4 o mas de 6 cilindros

base3 <- base[base$cyl<4 | base$cyl>6,]

2.6.4.6 Ejemplo 4 de filtro

Vehiculos con un numero de cilindros entre 4 y 6

Forma 1:

base4_f1 <- subset(base,base$cyl > 4 & base$cyl<6 )

Forma 2:

base4_f2 <- base[base$cyl > 4 & base$cyl<6, ]

Forma 3

base4_f3 <- base %>%
  filter(cyl >4 & cyl <6)

2.6.5 Calculo Media

La media es el promedio aritmético de un conjunto de valores numéricos. Se calcula sumando todos los valores y dividiendo entre la cantidad total de elementos.

base3 <- base[base$cyl<4 | base$cyl>6,]
mean(base3$wt)
## [1] 3.999214

2.7 Cargar Librerias

Sirve para carga de archivos Excel:

  1. install.packages(“readxl”)
library(readxl)

2.8 Cargar base de datos

read_excel("C:/Users/Katana/Desktop/Personal Dennis/Introducción al R/Proyecto Curso Introducción a R/insumos/pib_can_anual.xlsx")
## # A tibble: 2,210 × 20
##     year prov  dpa_prov canton       dpa_can Agricultura, ganaderia, silvicult…¹
##    <dbl> <chr> <chr>    <chr>        <chr>                                 <dbl>
##  1  2011 AZUAY 01       Cuenca       0101                                 56696.
##  2  2011 AZUAY 01       Girón        0102                                  4128.
##  3  2011 AZUAY 01       Gualaceo     0103                                  6806.
##  4  2011 AZUAY 01       Nabón        0104                                  6621.
##  5  2011 AZUAY 01       Paute        0105                                 46883.
##  6  2011 AZUAY 01       Pucará       0106                                  2322.
##  7  2011 AZUAY 01       San Fernando 0107                                  5647.
##  8  2011 AZUAY 01       Santa Isabel 0108                                  9594.
##  9  2011 AZUAY 01       Sigsig       0109                                  8331.
## 10  2011 AZUAY 01       Oña          0110                                  2034.
## # ℹ 2,200 more rows
## # ℹ abbreviated name: ¹​`Agricultura, ganaderia, silvicultura y pesca`
## # ℹ 14 more variables: `Explotacion de minas y canteras` <dbl>,
## #   `Manufactura\r\n\r\n` <dbl>, `Suministro de electricidad y de agua` <dbl>,
## #   `Construccion\r\n\r\n` <dbl>, `comercio\r\n\r\n` <dbl>,
## #   `Alojamiento y servicios de comida` <dbl>,
## #   `Transporte, informacion y comunicaciones` <dbl>, …

2.8.1 Cambiar de nombre a variables

names(base)[6]<- "agricultura"

2.8.2 Reemplazar los NA con 0

base[is.na(base)] <-0

2.8.3 Ver cuantas observaciones tengo por variable

table(base$canton)
## < table of extent 0 >

2.8.4 Nos quedamos con una provincia

library(dplyr)

base_santo <- base %>% filter(dpa_prov ==“23”)

base_manabi <- base%>% filter(prov== “MANABÍ”)

2.8.5 Quedarme solo con las variables necesarias

names(base_manabi) base_manabi1 <- base_manabi %>% select(year,prov,dpa_prov, canton, dpa_can,agricultura,“Explotacion de minas y canteras” )

#Vista resumen de una variable

summary(base_manabi1$agricultura)

#Valor limite 29351.06

#Eliminamos ultima variable base_manabi1 <- base_manabi1[,-7]

##Crear nueva variable dicotoma(mutate) base_manabi1 <- base_manabi1 %>% mutate(tipo_pib= ifelse(agricultura > 29351,“pib_alto”, “pib_bajo”))

base_manabi1 <- base_manabi1 %>% mutate(tipo= ifelse(agricultura > 29351, 1, 0))

base_manabi1 <- base_manabi1 %>% mutate(periodo= ifelse(year < 2016, “pre”, “post”))

2.8.6 Dividamos las bases por periodo

base_manabi1_pre <- base_manabi1 %>% filter(periodo==“pre”)

base_manabi1_post <- base_manabi1 %>% filter(periodo==“post”)

2.8.7 Sumar el PIB de agricultura por Canton

b_m_pre_agg <- base_manabi1_pre %>% group_by(canton) %>% summarise(total_agricultura_pre= sum(agricultura))

b_m_post_agg <- base_manabi1_post %>% group_by(canton) %>% summarise(total_agricultura_post= sum(agricultura))