Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG2/Tarea2_Grupo2.R
2714 views
1
2
# ==================================
3
# Respuesta al Ejercicio Grupal No.2
4
# ==================================
5
6
#Primero alistaremos una seria de librerías que serán relevantes para el trabajo con la base de datos
7
8
library(dplyr) # librería de limpieza de datos (será esencial más adelante ;)
9
library(tidyr)# librería de limpieza de datos
10
library(readxl) # lobreria para subir archivos excel, csv
11
getwd() #es necesario identificar el working director para saber donde estaremos generando resultados y cual es el punto de origen desde el cual buscaremos información
12
13
file.choose()
14
ruta_excel <- "D:\\Users\\Usuario\\Documents\\GitHub\\1ECO35_2022_2\\data\\junin_region.xlsx"
15
excel_sheets(ruta_excel)
16
17
junin <- read_excel(ruta_excel)
18
19
20
# (1) Obtener el nombre de todas las variables
21
22
23
str(junin) #la función str da tanto un listado de las variables como información que las caracteriza
24
names(junin) #Si solo nos interesa desplegar el nombre de las columnas, posiblemente sea mejor recurrir a la función names
25
26
27
# (2) Mostrar el tipo de variables (type) así como presentar los principales estadísticos.
28
29
str(junin) #este comando nos permite conocer la estructura de nuestra data
30
#A partir de este notamos que nuestra base es de 197 observaciones x 42 variables
31
#Asímismo, la mayor parte de nuestras variables son de tipo numérico, sin embargo, variables como Region, Distrito y Comunidad son character (lo que en otros programas se cuenta como string)
32
33
summary(junin) #el comando precedente genera los estadísticos principales de nuestras variables numéricas (mínimo, quintiles 1 y 3,mediana, media y máximo) y character (moda y largo)
34
35
#Si quisieramos conocer la desviación estándar de las observaciones de una variable, por ejemplo, instruction_men, entonces:
36
37
sd(junin$instruction_men)
38
39
#Adicionalmente, podemos requerir el cálculo de un subset de variables relevantes
40
41
attach(junin)
42
subset1 <- cbind(natives, whites, mestizos, blacks)
43
summary(subset1)
44
45
#También podemos recurrir a otras librerías para hacer el análisis descriptivo
46
install.packages("psych")
47
library(psych)
48
describe(subset1) #este comando en específico también nos da información sobre la simetría y la curtosis de la distribución de datos
49
50
51
# (3) Verifique si las columnas presentan missing values
52
53
any( is.na(junin) ) #esto quiere decir que en la base hay al menos un valor missing
54
any( is.null(junin) ) #mientras que no hay missings del tipo null
55
56
57
colSums(is.na(junin))# Notamos que son varias las columnas con valores missing
58
59
#Podemos identificar el número de columna y, por ende, el nombre de las columnas que contienen missings
60
61
names(which(colSums(is.na(junin))>0))
62
63
64
#Una forma alternativa de realizar esto, puede ser a través de la función apply
65
66
colnames(junin)[apply(junin, 2, anyNA)] #así requerimos los nombres de las columnas (por ello el segundo argumento es 2) que tienen missings
67
68
69
# (4) Cambie el nombre de las siguientes variables:
70
#place : comunidad
71
#men_not_read: homxlee
72
#women_not_read: mujerxlee
73
#total_not_read: totalxlee
74
75
#Podemos hacernos del paquete dplyr y renombrar las columnas directamente
76
77
install.packages("dplyr")
78
library(dplyr)
79
80
head(junin) #hasta este punto las columnas tenían los nombres originales
81
82
junin <- rename(junin, comunidad="Place", homxlee="men_not_read", mujerxlee="women_not_read", totalxlee= "total_not_read")
83
84
head(junin) #ahora las columnas señaladas tienen nombres modficiados
85
86
87
# (5) Muestre los valores únicos de las siguientes variables ( comunidad , District)
88
89
#Para hallar los valores únicos de una columna determinada la llamamos tras el signo $, y aplicamos el comando unique()
90
unique(junin$comunidad)
91
92
unique(junin$District)
93
94
95
# (6) Crear columnas con las siguiente información: el % de mujeres del que no escriben ni leen (mujerxlee/totalxlee) % de varones que no escriben ni leen (homxlee/totalxlee) y % de nativos respecto al total de la población. Para el total de la población sumar (peruvian_men + peruvian_women + foreign_men + foreign_women)
96
97
#Podemos abordar esto de múltiples formas
98
#Primero podríamos usar el operador $ (debemos usarlo tanto para indicar que la nueva columna formará parte de la base junin como para llamar a las columnas dentro de junin que serán operadas)
99
100
junin$per_women <- junin$mujerxlee/junin$totalxlee
101
102
head(junin$per_women)
103
104
#(7) Crear una base de datos con la siguiente información:
105
106
# a. Quedarse con la información de los distritos de Ciudad del Cerro, Jauja, Acolla, San Gerónimo, Tarma, Oroya y Concepción
107
#b. Luego quedarse con las comunidades que cuentan con nativos y mestizos.
108
#c. Solo quedarse con las variables nombre de distrito y comunidad.
109
#d. Guardar la base de datos en formato csv en la carpeta data. (Use el siguiente nombre Base_cleaned_WG(numero de grupo
110
111
#a. Debemos filtrar la base para quedarnos con un subset que cumpla una serie de características (tarea muy común en la ciencia de datos)
112
113
junin_f2 <- filter(junin, District=="CIUDAD DEL CERRO"
114
| District=="JAUJA"
115
|District=="ACOLLA"
116
|District=="SAN GERÓNIMO"
117
|District=="TARMA"
118
|District=="OROYA"
119
|District=="CONCEPCIÓN")
120
121
#b. ahora buscamos un subset con personas nativas o mestizas
122
#Por ello filtramos para quedarnos con observaciones cuyos números de nativos y mestizos sea mayor a cero
123
124
junin_f2 <- filter(junin, natives>0
125
& mestizos >0)
126
127
#c. Primero definimos las columnas de interés (sus nombres)
128
129
queda <- c("District","comunidad")
130
junin_f3 = junin_f2[queda]
131
132
133
write.csv(junin_f3,"D:\\Users\\Usuario\\Documents\\GitHub\\1ECO35_2022_2\\data\\Base_cleaned_WG2.csv", row.names = FALSE)
134