INSTRUCCIONES PARA UNA LECTURA AGIL: las instrucciones del ejercicio propuestas por el profesor estarán en color naranja y las respuestas, es decir las breves explicaciones, se visualizarán en color turquesa.
EJERCIO 1: Utilizando la información correspondiente a los resultados del Censo de Población y Vivienda 2020 del INEGI para el estado de Jalisco disponible en la plataforma Moodle, obtener lo que se pide en cada inciso.
Para este primer ejercicio utilizaremos la librería “readxl” para poder cargar la base de datos “jalisco”.
library(readxl)Importamos la base de datos con la ayuda de la función read_excel y a continuación aplicamos la función Data frame, nombrándola “datos”, esto con el fin de manipular el contenido de la base de datos a nuestro criterio.
Jalisco <- read_excel("C:/Users/ARRA/Desktop/Jalisco.xlsx")
datos <- data.frame(Jalisco)1.1) Los 10 municipios con mayor proporción de población con alguna discapacidad.
Primero utilizamos la función order para ordenar los datos luego el signo de $ para seleccionar las columnas deseadas. Dado lo que nos piden y ya que los datos estan ordenados de menor a mayor, utilizamos la función tail, para tomar los últimos 10 nombres y con la función print imprimimos los municipios.
datos1 <- datos$NOM_MUN[order(datos$PCON_DISC)]
print(tail(datos1,10))## [1] "Tepatitlán de Morelos" "Ocotlán" "Lagos de Moreno"
## [4] "El Salto" "Puerto Vallarta" "Tonalá"
## [7] "Tlajomulco de Zúñiga" "San Pedro Tlaquepaque" "Zapopan"
## [10] "Guadalajara"
1.2) Los 30 municipios con mayor proporción de población con 65 años o más.
nombramos como datos2 la población con 65 años y más e imprimimos los 30 minicipios tal y como se nos requiere.
datos2 <- datos$NOM_MUN[order(datos$POB65_MAS)]
print(tail(datos2,30))## [1] "Cocula" "Ayotlán" "Tomatlán"
## [4] "Tuxpan" "San Martín Hidalgo" "Poncitlán"
## [7] "Teocaltiche" "Jocotepec" "Encarnación de Díaz"
## [10] "Tamazula de Gordiano" "San Juan de los Lagos" "Zapotlanejo"
## [13] "Atotonilco el Alto" "Arandas" "Tala"
## [16] "Autlán de Navarro" "La Barca" "Ameca"
## [19] "Chapala" "Ocotlán" "El Salto"
## [22] "Zapotlán el Grande" "Tepatitlán de Morelos" "Lagos de Moreno"
## [25] "Puerto Vallarta" "Tlajomulco de Zúñiga" "Tonalá"
## [28] "San Pedro Tlaquepaque" "Zapopan" "Guadalajara"
1.3) Los 30 municipios con mayor Población Económicamente Activa
Ahora nombramos como datos3 a la P.E.A. y la imprimimos tal y como se nos pide.
datos3 <- datos$NOM_MUN[order(datos$PEA)]
print(tail(datos3,30))## [1] "Sayula" "Tomatlán"
## [3] "Teocaltiche" "Ayotlán"
## [5] "Cihuatlán" "Tequila"
## [7] "Jocotepec" "Poncitlán"
## [9] "Encarnación de Díaz" "Chapala"
## [11] "Ameca" "Atotonilco el Alto"
## [13] "La Barca" "Autlán de Navarro"
## [15] "Ixtlahuacán de los Membrillos" "Zapotlanejo"
## [17] "San Juan de los Lagos" "Arandas"
## [19] "Tala" "Ocotlán"
## [21] "Zapotlán el Grande" "Tepatitlán de Morelos"
## [23] "Lagos de Moreno" "El Salto"
## [25] "Puerto Vallarta" "Tonalá"
## [27] "San Pedro Tlaquepaque" "Tlajomulco de Zúñiga"
## [29] "Guadalajara" "Zapopan"
1.4) Los 10 municipios con mayor proporción de población sin educación básica.
nuevamente nombramos como datos4 a la población sin eduación básica y la imprimimos tal y como se nos pide.
datos4 <- datos$NOM_MUN[order(datos$P15YM_SE)]
print(tail(datos4,10))## [1] "Arandas" "Puerto Vallarta" "Tepatitlán de Morelos"
## [4] "El Salto" "Lagos de Moreno" "Tlajomulco de Zúñiga"
## [7] "Tonalá" "San Pedro Tlaquepaque" "Guadalajara"
## [10] "Zapopan"
1.5) Los 10 municipios con mayor población indígena.
De nuevo nombramos como datos5 a la población indígena y la imprimimos tal y como se nos pide.
datos5 <- datos$NOM_MUN[order(datos$PHOG_IND)]
print(tail(datos5,10))## [1] "Tomatlán" "Poncitlán"
## [3] "Zacoalco de Torres" "Unión de San Antonio"
## [5] "Degollado" "Tlajomulco de Zúñiga"
## [7] "Cocula" "Juanacatlán"
## [9] "San Ignacio Cerro Gordo" "Cihuatlán"
1.6) Los 10 municipios con mayor proporción de viviendas particulares habitadas con internet.
Para finalizar este primer ejecicio nombramos como datos6 a las viviendas con internet y la imprimimos tal y como se nos pide.
datos6 <- datos$NOM_MUN[order(datos$VPH_INTER)]
print(tail(datos6,10))## [1] "Zapotlán el Grande" "Lagos de Moreno" "Tepatitlán de Morelos"
## [4] "El Salto" "Puerto Vallarta" "Tonalá"
## [7] "San Pedro Tlaquepaque" "Tlajomulco de Zúñiga" "Guadalajara"
## [10] "Zapopan"
EJERCICIO 2 Demostrar que la siguiente cadena de texto es un palíndromo: A mamá Roma le aviva el amor a papá y a papá Roma le aviva el amor a mamá
En la siguiente sección utilizaremos las siguientes librerías.
# install.packages("stringr")
# install.packages("htmltools")
# install.packages("htmlwidgets")
library(stringr, htmltools)Para comprobar que la cadena de texto es palíndromo, realizamos una función que detecta si el texto ingresado es o no un palindromo: 1) con “function(texto)” iniciamos; 2) “textoinv” para una nueva cadena de texto vacía. 3) con “gsub(”“,”“, texto)” quitamos los espacios. 4) usando “str_to_lower(texto)” lo convertimos a minúsculas. y 5) “chartr(”áéíóú“,”aeiou“, texto)” Quitamos acentos. usamos “for” para recorrer la cadena seleccionando letras de mayor a menor. con “substr(texto, start = nchar(texto) - i, stop = nchar(texto) - i)” agregamos la letra a la cadena nueva. y por último con “ifelse” comparamos las dos cadenas.
palindromo <- function(texto){ #Iniciamos la función
textoInv <- ""
texto <- gsub(" ", "", texto)
texto <- str_to_lower(texto)
texto <- chartr("áéíóú", "aeiou", texto)
for(i in 0:nchar(texto)){
letra <- substr(texto, start = nchar(texto) - i, stop = nchar(texto) - i)
textoInv <- paste(textoInv, letra)
textoInv <- gsub(" ", "", textoInv) #Para quitar espacios en la nueva cadena
} #Termina For
ifelse(textoInv == texto,
"La cadena de texto que introdujo efectivamente es un palíndromo",
"La cadena de texto que introdujo NO es un palíndromo")
} #Concluye la funciónVerificamos si el texto es palíndromo.
palindromo("A mamá Roma le aviva el amor a papá y a papá Roma le aviva el amor a mamá")## [1] "La cadena de texto que introdujo efectivamente es un palíndromo"
EJERCICIO 3 Probar si la siguiente matriz (X) es definida positiva y, si sí obtener su inversa. Y una vez obtenida su inversa, comprobar que XX−1 = I
Para crear la matríz primero nombramos cada uno de los vectores y los imprimimos.
vector_1 <- c(3,4,-1)
vector_2 <- c(2,-1,3)
vector_3 <- c(2,2,1)
print(vector_1)## [1] 3 4 -1
print(vector_2)## [1] 2 -1 3
print(vector_3)## [1] 2 2 1
Creamos la matríz,con “rbind” para que los vectores se formen horizontalmente ya que la r viene de “row”; renglón. Por lo tanto quedarán de forma horizontal.
matriz <- rbind(vector_1, vector_2, vector_3)
matriz## [,1] [,2] [,3]
## vector_1 3 4 -1
## vector_2 2 -1 3
## vector_3 2 2 1
Para probar si es definida positiva, haremos uso del siguiente teorema: A es una matriz y es definida positiva si y sólo si A es simétrica y todos sus eigenvalores son positivos. Hacemos uso de la función eigen, la cual nos regresa los eigenvalores y los eigenvectores.
phi <- eigen(matriz)
phi$values #seleccionamos los eigenvalores## [1] 5.1195839 -2.8685958 0.7490118
phi$values > 0 # verificamos si todas las entradas son positivas## [1] TRUE FALSE TRUE
Por último dado que uno de los eigenvalores no es positivo, la matríz no es definida positiva, por el teorema anteriormente citado.