PARA OBSERVAR EN R PUBS:
https://rpubs.com/EsmeraldaAN/646447
1. Crear
- V1: un vector numerico con 30 valores
- V2: un vector numerico que repita 10 veces el valor 1, 10 veces el valor 2 y 10 veces el valor 3. Luego transformar dicho vector como factor y que cada nivel signifique soltero, casado y divorciado
## [1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
## Factor w/ 3 levels "1","2","3": 1 1 1 1 1 1 1 1 1 1 ...
## [1] soltero soltero soltero soltero soltero soltero
## [7] soltero soltero soltero soltero casado casado
## [13] casado casado casado casado casado casado
## [19] casado casado divorciado divorciado divorciado divorciado
## [25] divorciado divorciado divorciado divorciado divorciado divorciado
## Levels: soltero casado divorciado
- V3: un vector logico con 30 valores
## [1] 5.0 6.6 8.1 9.7 11.2 12.8 14.3 15.9 17.4 19.0 20.5 22.1 23.6 25.2 26.7
## [16] 28.3 29.8 31.4 32.9 34.5 36.0 37.6 39.1 40.7 42.2 43.8 45.3 46.9 48.4 50.0
- ¿cuantos valores estan en el rango de 10 y 30?
## [1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [13] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE FALSE FALSE
## V3
## FALSE TRUE
## 17 13
- V4: un vector de cadena con 30 valores
## [1] "Dias-1" "Dias-2" "Dias-3" "Dias-4" "Dias-5" "Dias-6" "Dias-7"
## [8] "Dias-8" "Dias-9" "Dias-10" "Dias-11" "Dias-12" "Dias-13" "Dias-14"
## [15] "Dias-15" "Dias-16" "Dias-17" "Dias-18" "Dias-19" "Dias-20" "Dias-21"
## [22] "Dias-22" "Dias-23" "Dias-24" "Dias-25" "Dias-26" "Dias-27" "Dias-28"
## [29] "Dias-29" "Dias-30"
- M1: una matriz con 16 valores
## [,1] [,2] [,3] [,4]
## [1,] 9 7 7 13
## [2,] 9 8 8 7
## [3,] 13 7 16 12
## [4,] 15 11 12 11
- M2: una matriz con 16 valores
## [,1] [,2] [,3] [,4]
## [1,] 0.3430688 0.6206263 0.9045421 1.2447106
## [2,] 0.1783665 2.6920901 0.5751720 0.4291419
## [3,] 5.6945109 5.7452340 1.7342675 0.9160134
## [4,] 3.7062691 2.1136820 6.2938233 0.4145837
-M3: crear una matriz que sea la multiplicación de M1 y M2
## [,1] [,2] [,3] [,4]
## [1,] 92.37926 92.12477 106.12666 26.00807
## [2,] 76.01452 87.88000 70.67316 24.86572
## [3,] 141.29586 144.20070 119.05941 38.81645
## [4,] 116.21115 131.11570 109.93829 38.94380
-M4: crear una matriz que sea la inversa de la matriz M1
## [,1] [,2] [,3] [,4]
## [1,] -0.054223149 -0.61209593 -0.057351408 0.51616267
## [2,] -0.004171011 0.56830031 -0.081334724 -0.26798749
## [3,] -0.069864442 0.26903024 0.137643379 -0.23879041
## [4,] 0.154327424 -0.02711157 0.009384776 -0.08446298
- A1: un array de 3 dimensiones, cada dimension debe tener 12 valores, en total 36 valores
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## [26] 26 27 28 29 30 31 32 33 34 35 36
## , , 1
##
## [,1] [,2] [,3]
## [1,] 1 13 25
## [2,] 2 14 26
## [3,] 3 15 27
## [4,] 4 16 28
## [5,] 5 17 29
## [6,] 6 18 30
## [7,] 7 19 31
## [8,] 8 20 32
## [9,] 9 21 33
## [10,] 10 22 34
## [11,] 11 23 35
## [12,] 12 24 36
## [1] "array"
- DF1: un dataframe que contenga los vectores V1, V2, V3 y V4
## V1 V2 V3 V4
## 1 1 soltero FALSE Dias-1
## 2 2 soltero FALSE Dias-2
## 3 3 soltero FALSE Dias-3
## 4 4 soltero FALSE Dias-4
## 5 5 soltero TRUE Dias-5
## 6 6 soltero TRUE Dias-6
## 7 7 soltero TRUE Dias-7
## 8 8 soltero TRUE Dias-8
## 9 9 soltero TRUE Dias-9
## 10 10 soltero TRUE Dias-10
## 11 11 casado TRUE Dias-11
## 12 12 casado TRUE Dias-12
## 13 13 casado TRUE Dias-13
## 14 14 casado TRUE Dias-14
## 15 15 casado TRUE Dias-15
## 16 16 casado TRUE Dias-16
## 17 17 casado TRUE Dias-17
## 18 18 casado FALSE Dias-18
## [ reached 'max' / getOption("max.print") -- omitted 12 rows ]
- DF2: un dataframe nuevo que sea el mismo DF1 pero añadiendo una variable nueva que sea el resultado de multiplicar por 100 el vector V1
## V1...100 V2 V3 V4
## 1 100 soltero FALSE Dias-1
## 2 200 soltero FALSE Dias-2
## 3 300 soltero FALSE Dias-3
## 4 400 soltero FALSE Dias-4
## 5 500 soltero TRUE Dias-5
## 6 600 soltero TRUE Dias-6
## 7 700 soltero TRUE Dias-7
## 8 800 soltero TRUE Dias-8
## 9 900 soltero TRUE Dias-9
## 10 1000 soltero TRUE Dias-10
## 11 1100 casado TRUE Dias-11
## 12 1200 casado TRUE Dias-12
## 13 1300 casado TRUE Dias-13
## 14 1400 casado TRUE Dias-14
## 15 1500 casado TRUE Dias-15
## 16 1600 casado TRUE Dias-16
## 17 1700 casado TRUE Dias-17
## 18 1800 casado FALSE Dias-18
## [ reached 'max' / getOption("max.print") -- omitted 12 rows ]
## 'data.frame': 30 obs. of 4 variables:
## $ V1...100: num 100 200 300 400 500 600 700 800 900 1000 ...
## $ V2 : Factor w/ 3 levels "soltero","casado",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ V3 : logi FALSE FALSE FALSE FALSE TRUE TRUE ...
## $ V4 : chr "Dias-1" "Dias-2" "Dias-3" "Dias-4" ...
- L1: lista que contenga todos los objetos mencionados anteriormente
## [[1]]
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## [26] 26 27 28 29 30
##
## [[2]]
## [1] soltero soltero soltero soltero soltero soltero
## [7] soltero soltero soltero soltero casado casado
## [13] casado casado casado casado casado casado
## [19] casado casado divorciado divorciado divorciado divorciado
## [25] divorciado divorciado divorciado divorciado divorciado divorciado
## Levels: soltero casado divorciado
##
## [[3]]
## [1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [13] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE FALSE FALSE
##
## [[4]]
## [1] "Dias-1" "Dias-2" "Dias-3" "Dias-4" "Dias-5" "Dias-6" "Dias-7"
## [8] "Dias-8" "Dias-9" "Dias-10" "Dias-11" "Dias-12" "Dias-13" "Dias-14"
## [15] "Dias-15" "Dias-16" "Dias-17" "Dias-18" "Dias-19" "Dias-20" "Dias-21"
## [22] "Dias-22" "Dias-23" "Dias-24" "Dias-25" "Dias-26" "Dias-27" "Dias-28"
## [29] "Dias-29" "Dias-30"
##
## [[5]]
## [,1] [,2] [,3] [,4]
## [1,] 9 7 7 13
## [2,] 9 8 8 7
## [3,] 13 7 16 12
## [4,] 15 11 12 11
##
## [[6]]
## [,1] [,2] [,3] [,4]
## [1,] 0.3430688 0.6206263 0.9045421 1.2447106
## [2,] 0.1783665 2.6920901 0.5751720 0.4291419
## [3,] 5.6945109 5.7452340 1.7342675 0.9160134
## [4,] 3.7062691 2.1136820 6.2938233 0.4145837
##
## [[7]]
## [,1] [,2] [,3] [,4]
## [1,] 92.37926 92.12477 106.12666 26.00807
## [2,] 76.01452 87.88000 70.67316 24.86572
## [3,] 141.29586 144.20070 119.05941 38.81645
## [4,] 116.21115 131.11570 109.93829 38.94380
##
## [[8]]
## [,1] [,2] [,3] [,4]
## [1,] -0.054223149 -0.61209593 -0.057351408 0.51616267
## [2,] -0.004171011 0.56830031 -0.081334724 -0.26798749
## [3,] -0.069864442 0.26903024 0.137643379 -0.23879041
## [4,] 0.154327424 -0.02711157 0.009384776 -0.08446298
##
## [[9]]
## , , 1
##
## [,1] [,2] [,3]
## [1,] 1 13 25
## [2,] 2 14 26
## [3,] 3 15 27
## [4,] 4 16 28
## [5,] 5 17 29
## [6,] 6 18 30
## [7,] 7 19 31
## [8,] 8 20 32
## [9,] 9 21 33
## [10,] 10 22 34
## [11,] 11 23 35
## [12,] 12 24 36
##
##
## [[10]]
## V1 V2 V3 V4
## 1 1 soltero FALSE Dias-1
## 2 2 soltero FALSE Dias-2
## 3 3 soltero FALSE Dias-3
## 4 4 soltero FALSE Dias-4
## 5 5 soltero TRUE Dias-5
## 6 6 soltero TRUE Dias-6
## 7 7 soltero TRUE Dias-7
## 8 8 soltero TRUE Dias-8
## 9 9 soltero TRUE Dias-9
## 10 10 soltero TRUE Dias-10
## 11 11 casado TRUE Dias-11
## 12 12 casado TRUE Dias-12
## 13 13 casado TRUE Dias-13
## 14 14 casado TRUE Dias-14
## 15 15 casado TRUE Dias-15
## 16 16 casado TRUE Dias-16
## 17 17 casado TRUE Dias-17
## 18 18 casado FALSE Dias-18
## [ reached 'max' / getOption("max.print") -- omitted 12 rows ]
##
## [[11]]
## V1...100 V2 V3 V4
## 1 100 soltero FALSE Dias-1
## 2 200 soltero FALSE Dias-2
## 3 300 soltero FALSE Dias-3
## 4 400 soltero FALSE Dias-4
## 5 500 soltero TRUE Dias-5
## 6 600 soltero TRUE Dias-6
## 7 700 soltero TRUE Dias-7
## 8 800 soltero TRUE Dias-8
## 9 900 soltero TRUE Dias-9
## 10 1000 soltero TRUE Dias-10
## 11 1100 casado TRUE Dias-11
## 12 1200 casado TRUE Dias-12
## 13 1300 casado TRUE Dias-13
## 14 1400 casado TRUE Dias-14
## 15 1500 casado TRUE Dias-15
## 16 1600 casado TRUE Dias-16
## 17 1700 casado TRUE Dias-17
## 18 1800 casado FALSE Dias-18
## [ reached 'max' / getOption("max.print") -- omitted 12 rows ]
- Realizar dos ejemplos de indexación en listas: el primero debe seleccionar V1 y el segundo debe seleccionar los primeros 5 valores de V2.
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## [26] 26 27 28 29 30
## [1] "integer"
## [1] soltero soltero soltero soltero soltero
## Levels: soltero casado divorciado
2. Importar datasets y crear gráficos:
- Importar en R los archivos: Clientes_2016_2017.xlsx (datos de clientes), Depositos_2016.csv y Depositos_2017.csv (datos transaccionales de depositos), llamarlos BD1, BD2 y BD3 respectivamente
## [1] "C:/Users/Esmeralda/Documents/R/curso r"
setwd("C:/Users/Esmeralda/Documents/R/curso r/datos")
library(readxl)
BD1<-read_excel("Clientes_2016_2017.xlsx")
BD2<-read.csv("Depositos_2016.csv")
BD3<-read.csv("Depositos_2017.csv")- Crear BD23, debe representar la union de BD2 y BD3
## ID CUENTA MONTO_SOLES FECHA_TRANSAX
## 1 ID12796 CORRIENTE 150.32 07/02/2016
## 2 ID12797 AHORRO 1211.89 30/07/2016
## 3 ID12797 CORRIENTE 512.92 09/08/2016
## 4 ID12798 AHORRO 541.13 21/12/2016
## 5 ID12798 CORRIENTE 735.48 21/05/2016
## 6 ID12799 AHORRO 298.15 19/07/2016
## 7 ID12799 CORRIENTE 55.43 28/10/2016
## 8 ID12800 AHORRO 88.85 26/02/2016
## 9 ID12800 CORRIENTE 610.90 29/07/2016
## 10 ID12801 AHORRO 319.55 17/12/2016
## 11 ID12802 CORRIENTE 1034.09 27/05/2016
## 12 ID12802 CORRIENTE 1311.47 22/07/2016
## 13 ID12803 AHORRO 1471.71 13/07/2016
## 14 ID12804 AHORRO 2209.38 16/04/2016
## 15 ID12804 CORRIENTE 1204.61 02/05/2016
## 16 ID12805 CORRIENTE 5171.41 07/11/2016
## 17 ID12806 CORRIENTE 2420.34 18/06/2016
## 18 ID12807 CORRIENTE 4546.00 11/02/2016
## [ reached 'max' / getOption("max.print") -- omitted 335 rows ]
- Crear BD4, que represente el calculo del minimo, maximo, promedio y suma de MONTO_SOLES por cada ID de BD23. BD4 debe tener esta estructura:
library(dplyr)
BD4<-summarise(group_by(BD23, ID),
MONTO_min = min(MONTO_SOLES),
MONTO_max = max(MONTO_SOLES),
MONTO_prom = mean(MONTO_SOLES),
MONTO_sum = sum(MONTO_SOLES))- Crear BD5 que sea la union de registros coincidentes de BD1 y BD4, considerando la variable en común ID.
## # A tibble: 196 x 12
## ID EDAD SEXO REGION INGRESOS CASADO HIJOS AUTO MONTO_min MONTO_max
## <chr> <dbl> <chr> <chr> <dbl> <chr> <dbl> <chr> <dbl> <dbl>
## 1 ID12~ 23 MASC~ LIMA_~ 18766 SI 0 SI 1000 1000
## 2 ID12~ 30 MASC~ LIMA_~ 9915 NO 1 NO 100 100
## 3 ID12~ 45 FEME~ LIMA_~ 21881 NO 0 SI 150 300
## 4 ID12~ 50 MASC~ LIMA_~ 46794 SI 2 NO 2000 2000
## 5 ID12~ 41 FEME~ LIMA_~ 20721 SI 0 SI 150 2742
## 6 ID12~ 20 MASC~ LIMA_~ 16688 NO 1 NO 132 1412
## 7 ID12~ 46 FEME~ LIMA_~ 39068 SI 0 SI 10 10
## 8 ID12~ 50 FEME~ LIMA_~ 27740 SI 1 SI 5 5
## 9 ID12~ 42 MASC~ LIMA_~ 33584 NO 3 SI 50 50
## 10 ID12~ 57 FEME~ LIMA_~ 19621 SI 1 SI 43 980
## # ... with 186 more rows, and 2 more variables: MONTO_prom <dbl>,
## # MONTO_sum <dbl>
- De BD5, graficar un histograma de la suma de MONTO_soles, separado por SEXO
## tibble [196 x 12] (S3: tbl_df/tbl/data.frame)
## $ ID : chr [1:196] "ID12701" "ID12702" "ID12703" "ID12704" ...
## $ EDAD : num [1:196] 23 30 45 50 41 20 46 50 42 57 ...
## $ SEXO : chr [1:196] "MASCULINO" "MASCULINO" "FEMENINO" "MASCULINO" ...
## $ REGION : chr [1:196] "LIMA_ESTE" "LIMA_CENTRO" "LIMA_CENTRO" "LIMA_NORTE" ...
## $ INGRESOS : num [1:196] 18766 9915 21881 46794 20721 ...
## $ CASADO : chr [1:196] "SI" "NO" "NO" "SI" ...
## $ HIJOS : num [1:196] 0 1 0 2 0 1 0 1 3 1 ...
## $ AUTO : chr [1:196] "SI" "NO" "SI" "NO" ...
## $ MONTO_min : num [1:196] 1000 100 150 2000 150 132 10 5 50 43 ...
## $ MONTO_max : num [1:196] 1000 100 300 2000 2742 ...
## $ MONTO_prom: num [1:196] 1000 100 225 2000 1027 ...
## $ MONTO_sum : num [1:196] 1000 100 450 2000 3082 ...
BD5$SEXO<-as.factor(BD5$SEXO)
BD5$CASADO<-as.factor(BD5$CASADO)
BD5$AUTO<-as.factor(BD5$AUTO)
ggplotly(ggplot(BD5,aes(x=MONTO_sum,fill=SEXO))+geom_histogram(position = "stack"))- De BD5, graficar una matriz de dispersion con las variables minimo, maximo, promedio y suma de MONTO_SOLES, agrupado por REGION
ggpairs(BD5, columns = c("MONTO_min", "MONTO_max", "MONTO_prom","MONTO_sum"),
mapping = aes(color=REGION))