library(paqueteDAT) 
data("vivienda") 
head(vivienda,5) 
##     id         zona piso estrato preciom areaconst parqueaderos banios
## 1 1147 Zona Oriente <NA>       3     250        70            1      3
## 2 1169 Zona Oriente <NA>       3     320       120            1      2
## 3 1350 Zona Oriente <NA>       3     350       220            2      2
## 4 5992     Zona Sur   02       4     400       280            3      5
## 5 1212   Zona Norte   01       5     260        90            1      2
##   habitaciones        tipo      barrio  longitud latitud
## 1            6        Casa 20 de julio -76.51168 3.43382
## 2            3        Casa 20 de julio -76.51237 3.43369
## 3            4        Casa 20 de julio -76.51537 3.43566
## 4            3        Casa  3 de julio -76.54000 3.43500
## 5            3 Apartamento       acopi -76.51350 3.45891
cantidad_filas <- nrow(vivienda)
print(cantidad_filas)
## [1] 8322

ahora, miramos que tipo de datos tiene el dataset por columna

class(vivienda$zona)
## [1] "character"
class(vivienda$piso)
## [1] "character"
class(vivienda$estrato)
## [1] "numeric"
class(vivienda$preciom)
## [1] "numeric"
class(vivienda$areaconst)
## [1] "numeric"
class(vivienda$parqueaderos)
## [1] "numeric"
class(vivienda$banios)
## [1] "numeric"
class(vivienda$habitaciones)
## [1] "numeric"
class(vivienda$tipo)
## [1] "character"
class(vivienda$barrio)
## [1] "character"
class(vivienda$longitud)
## [1] "numeric"
class(vivienda$latitud)
## [1] "numeric"

ahora vamos a ver cuantos datos faltantes tiene cada columna

sum(is.na(vivienda$zona))
## [1] 3
sum(is.na(vivienda$piso))
## [1] 2638
sum(is.na(vivienda$estrato))
## [1] 3
sum(is.na(vivienda$preciom))
## [1] 2
sum(is.na(vivienda$areaconst))
## [1] 3
sum(is.na(vivienda$parqueaderos))
## [1] 1605
sum(is.na(vivienda$banios))
## [1] 3
sum(is.na(vivienda$habitaciones))
## [1] 3
sum(is.na(vivienda$tipo))
## [1] 3
sum(is.na(vivienda$barrio))
## [1] 3
sum(is.na(vivienda$longitud))
## [1] 3
sum(is.na(vivienda$latitud))
## [1] 3

como hay columnas con muchos datos faltantes, las eliminamos preliminarmente, tambien borramos la columna barrio, ya que para este análisis es irrelevante

borrar <- c("piso","parqueaderos","barrio")
vivienda <- vivienda[ ,!(names(vivienda) %in% borrar)]
head(vivienda,5)
##     id         zona estrato preciom areaconst banios habitaciones        tipo
## 1 1147 Zona Oriente       3     250        70      3            6        Casa
## 2 1169 Zona Oriente       3     320       120      2            3        Casa
## 3 1350 Zona Oriente       3     350       220      2            4        Casa
## 4 5992     Zona Sur       4     400       280      5            3        Casa
## 5 1212   Zona Norte       5     260        90      2            3 Apartamento
##    longitud latitud
## 1 -76.51168 3.43382
## 2 -76.51237 3.43369
## 3 -76.51537 3.43566
## 4 -76.54000 3.43500
## 5 -76.51350 3.45891

quedamos solo con variables numéricas, menos zona y tipo, pero zona y tipo pueden ser recodificadas, y lo hacemos de la siguiente manera.

library(dplyr) 
## Warning: package 'dplyr' was built under R version 4.2.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
vivienda <- vivienda %>% mutate(zona = replace(zona, zona == "Zona Centro", 1))
vivienda <- vivienda %>% mutate(zona = replace(zona, zona == "Zona Norte", 2))
vivienda <- vivienda %>% mutate(zona = replace(zona, zona == "Zona Oeste", 3))
vivienda <- vivienda %>% mutate(zona = replace(zona, zona == "Zona Oriente", 4))
vivienda <- vivienda %>% mutate(zona = replace(zona, zona == "Zona Sur", 5))
vivienda$zona <- as.numeric(vivienda$zona)

vivienda <- vivienda %>% mutate(tipo = replace(tipo, tipo == "Casa", 1))
vivienda <- vivienda %>% mutate(tipo = replace(tipo, tipo == "Apartamento", 2))
vivienda$tipo <- as.numeric(vivienda$tipo)
head(vivienda,5)
## # A tibble: 5 × 10
##      id  zona estrato preciom areaconst banios habitaciones  tipo longitud
##   <dbl> <dbl>   <dbl>   <dbl>     <dbl>  <dbl>        <dbl> <dbl>    <dbl>
## 1  1147     4       3     250        70      3            6     1    -76.5
## 2  1169     4       3     320       120      2            3     1    -76.5
## 3  1350     4       3     350       220      2            4     1    -76.5
## 4  5992     5       4     400       280      5            3     1    -76.5
## 5  1212     2       5     260        90      2            3     2    -76.5
## # ℹ 1 more variable: latitud <dbl>

ahora que tenemos todos los datos númericos, generamos una matriz de correlacion, generamos una matriz de correlación, que nos permite analizar la incidencia entre sí de los datos

library(psych)
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.2.3
## corrplot 0.92 loaded
correlacion <- cor(vivienda, use = "complete.obs")
corrplot(correlacion, method = "number")