EJERCIO 1

En la siguiente sección utilizaremos la librería “readxl” para poder cargar nuestra base de datos.

library(readxl)

Importamos la base de datos con la ayuda de la función read_excel y continuamos convirtiendo la base en un marco de datos (Data frame), al cual nombramos “datos”, con la finalidad de poder manipular con mayor facilidad el contenido.

Jalisco <- read_excel("Jalisco.xlsx")
datos <- data.frame(Jalisco)

1)

Los 10 municipios con mayor proporción de población con alguna discapacidad.

discapacidad
datos1 <- datos$NOM_MUN[order(datos$PCON_DISC)]  # ordenamos los datos con la función order
                                                 # seleccionamos las columnas deseadas conel signo de $

print(tail(datos1,10))  # Ya que estan ordenadas de menor a mayor, utilizamos la función tail, para tomar los ultimos 10 nombres, los cuales corresponden a lo requerido
##  [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"
# La función print nos auxilia para imprimir los municipios

2)

Los 30 municipios con mayor proporción de población con 65 años o más.

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"

3)

Los 30 municipios con mayor población económicamente activa

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"

4)

Los 10 municipios con mayor proporción de población sin educación básica.

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"

5)

Los 10 municipios con mayor población indígena

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"

6)

Los 10 municipios con mayor proporción de viviendas particulares habitadas con internet

internet
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

7)

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 librerias.

# 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 de este tipo.

palindromo <- function(texto){ #Inicia la creación de la función
  
  textoInv <- ""               # Nueva cadena de texto, vacia.  
  texto <- gsub(" ", "", texto) # Quita espacios
  texto <- str_to_lower(texto)  # Convierte todo el texto a minusculas
  texto <- chartr("áéíóú", "aeiou", texto) #Quita acentos
  
  for(i in 0:nchar(texto)){    #inicio de for, para recorrer la cadena 
    # Seleccionar letras en orden descendente
    letra <- substr(texto, start = nchar(texto) - i, stop = nchar(texto) - i) 
    # Agregamos la letra a la cadena nueva
    textoInv <- paste(textoInv, letra)
    # Quitar espacios en la nueva cadena
    textoInv <- gsub(" ", "", textoInv)
    
  } # Termina For 

  ifelse(textoInv == texto,      # compara las dos cadenas  
         "La cadena de texto que introdujo es un palíndromo",    # mensaje si son iguales 
         "La cadena de texto que introdujo NO es un palíndromo") # mensaje si difieren
  
} # Termina la función

Por último, ya creada la función la usamos para verificar 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 es un palíndromo"

EJERCICIO 3

8)

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 formulamos los vectores.

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, indicando que los vectores sean tomados de forma horizontal

matriz <- rbind(vector_1, vector_2, vector_3) #vectores horizontales
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

lambdas <- eigen(matriz) 
lambdas$values #seleccionamos los eigenvalores
## [1]  5.1195839 -2.8685958  0.7490118
lambdas$values > 0  # verificamos si todas las entradas son positivas
## [1]  TRUE FALSE  TRUE

Finalmente dado que uno de los eigenvalores no es positivo, la matríz no es definida positiva.