library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.0 ✔ purrr 0.3.5
## ✔ tibble 3.1.8 ✔ dplyr 1.0.10
## ✔ tidyr 1.2.1 ✔ stringr 1.4.1
## ✔ readr 2.1.3 ✔ forcats 0.5.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(ggplot2)
# carga de archivo
archivo <- "GESTION_PRINCIPAL_BETA2.csv"
datos <- read.csv(archivo)
#campos <- c("NOMBRE_PROYECTO", "PRECIO_BASE", "PRECIO_LISTA", "ORIENTACION", "TIPOLOGIA", "TIPO_PRODUCTO", "MET_CUADRADO","SUPERFICIE_INTERIOR", "SUPERFICIE_TERRAZA")
# columnas seleccionadas
unidades <- datos
head(unidades)
## CODIGO_PROYECTO CODIGO_ETAPA ETAPA TORRE DCTO_DINAMICO COLUMNA PRODUCTO
## 1 1 1 ETAPA 1 1 0 3 1003
## 2 1 1 ETAPA 1 1 0 3 1103
## 3 1 1 ETAPA 1 1 0 3 1203
## 4 1 1 ETAPA 1 1 0 3 1303
## 5 1 1 ETAPA 1 1 0 3 1403
## 6 1 1 ETAPA 1 1 0 3 1503
## PISO MET_CUADRADO PRECIO_BASE PRECIO_LISTA ORIENTACION TIPOLOGIA
## 1 10 74.2 4867.26 5446 SUR 2D/2B
## 2 11 74.2 4906.51 5490 SUR 2D/2B
## 3 12 74.2 4946.08 5534 SUR 2D/2B
## 4 13 74.2 4906.51 5490 SUR 2D/2B
## 5 14 74.2 4867.26 5446 SUR 2D/2B
## 6 15 74.2 4828.32 5403 SUR 2D/2B
## DISPONIBILIDAD VIGENCIA FACTOR_IVA ID PRECIO_PROYECTADO
## 1 N NULL 0 000111D01003 4902.00
## 2 N NULL 0 000111D01103 4941.00
## 3 N NULL 0 000111D01203 4981.00
## 4 N NULL 0 000111D01303 4941.00
## 5 N NULL 0 000111D01403 4902.00
## 6 N NULL 0 000111D01503 4862.00
## TIPO_PRODUCTO SUPERFICIE_INTERIOR SUPERFICIE_TERRAZA SUPERFICIE_JARDIN
## 1 DEPARTAMENTO 63380 10820 .000
## 2 DEPARTAMENTO 63380 10820 .000
## 3 DEPARTAMENTO 63380 10820 .000
## 4 DEPARTAMENTO 63380 10820 .000
## 5 DEPARTAMENTO 63380 10820 .000
## 6 DEPARTAMENTO 63380 10820 .000
## SUPERFICIE_INTERIOR_MUNICIPAL SUPERFICIE_TERRAZA_MUNICIPAL
## 1 .000 .000
## 2 .000 .000
## 3 .000 .000
## 4 .000 .000
## 5 .000 .000
## 6 .000 .000
## SUPERFICIE_TOTAL_MUNICIPAL
## 1 .000
## 2 .000
## 3 .000
## 4 .000
## 5 .000
## 6 .000
colSums(is.na(unidades))
## CODIGO_PROYECTO CODIGO_ETAPA
## 0 0
## ETAPA TORRE
## 0 0
## DCTO_DINAMICO COLUMNA
## 0 0
## PRODUCTO PISO
## 0 0
## MET_CUADRADO PRECIO_BASE
## 0 0
## PRECIO_LISTA ORIENTACION
## 0 0
## TIPOLOGIA DISPONIBILIDAD
## 0 0
## VIGENCIA FACTOR_IVA
## 0 0
## ID PRECIO_PROYECTADO
## 0 0
## TIPO_PRODUCTO SUPERFICIE_INTERIOR
## 0 0
## SUPERFICIE_TERRAZA SUPERFICIE_JARDIN
## 0 0
## SUPERFICIE_INTERIOR_MUNICIPAL SUPERFICIE_TERRAZA_MUNICIPAL
## 0 0
## SUPERFICIE_TOTAL_MUNICIPAL
## 0
# no hay valores nulos o blancos
str(unidades)
## 'data.frame': 7442 obs. of 25 variables:
## $ CODIGO_PROYECTO : int 1 1 1 1 1 1 1 1 1 1 ...
## $ CODIGO_ETAPA : int 1 1 1 1 1 1 1 1 1 1 ...
## $ ETAPA : chr "ETAPA 1" "ETAPA 1" "ETAPA 1" "ETAPA 1" ...
## $ TORRE : int 1 1 1 1 1 1 1 1 1 1 ...
## $ DCTO_DINAMICO : num 0 0 0 0 0 0 0 0 0 0 ...
## $ COLUMNA : int 3 3 3 3 3 3 3 3 3 3 ...
## $ PRODUCTO : chr "1003" "1103" "1203" "1303" ...
## $ PISO : int 10 11 12 13 14 15 16 17 18 3 ...
## $ MET_CUADRADO : num 74.2 74.2 74.2 74.2 74.2 ...
## $ PRECIO_BASE : num 4867 4907 4946 4907 4867 ...
## $ PRECIO_LISTA : num 5446 5490 5534 5490 5446 ...
## $ ORIENTACION : chr "SUR" "SUR" "SUR" "SUR" ...
## $ TIPOLOGIA : chr "2D/2B" "2D/2B" "2D/2B" "2D/2B" ...
## $ DISPONIBILIDAD : chr "N" "N" "N" "N" ...
## $ VIGENCIA : chr "NULL" "NULL" "NULL" "NULL" ...
## $ FACTOR_IVA : num 0 0 0 0 0 0 0 0 0 0 ...
## $ ID : chr "000111D01003" "000111D01103" "000111D01203" "000111D01303" ...
## $ PRECIO_PROYECTADO : chr "4902.00" "4941.00" "4981.00" "4941.00" ...
## $ TIPO_PRODUCTO : chr "DEPARTAMENTO" "DEPARTAMENTO" "DEPARTAMENTO" "DEPARTAMENTO" ...
## $ SUPERFICIE_INTERIOR : chr "63380" "63380" "63380" "63380" ...
## $ SUPERFICIE_TERRAZA : chr "10820" "10820" "10820" "10820" ...
## $ SUPERFICIE_JARDIN : chr ".000" ".000" ".000" ".000" ...
## $ SUPERFICIE_INTERIOR_MUNICIPAL: chr ".000" ".000" ".000" ".000" ...
## $ SUPERFICIE_TERRAZA_MUNICIPAL : chr ".000" ".000" ".000" ".000" ...
## $ SUPERFICIE_TOTAL_MUNICIPAL : chr ".000" ".000" ".000" ".000" ...
# transformar a valores discretos
unidades <- unidades %>%
mutate(CODIGO_PROYECTO = as.factor(CODIGO_PROYECTO),
ORIENTACION = as.factor(ORIENTACION),
TIPOLOGIA = as.factor(TIPOLOGIA),
TIPO_PRODUCTO = as.factor(TIPO_PRODUCTO),
SUPERFICIE_INTERIOR = as.double(SUPERFICIE_INTERIOR),
SUPERFICIE_TERRAZA = as.double(SUPERFICIE_TERRAZA),
SUPERFICIE_JARDIN = as.double(SUPERFICIE_JARDIN),
SUPERFICIE_INTERIOR_MUNICIPAL = as.double(SUPERFICIE_INTERIOR_MUNICIPAL),
SUPERFICIE_TERRAZA_MUNICIPAL = as.double(SUPERFICIE_TERRAZA_MUNICIPAL),
SUPERFICIE_TOTAL_MUNICIPAL = as.double(SUPERFICIE_TOTAL_MUNICIPAL)
)
## Warning in mask$eval_all_mutate(quo): NAs introducidos por coerción
## Warning in mask$eval_all_mutate(quo): NAs introducidos por coerción
## Warning in mask$eval_all_mutate(quo): NAs introducidos por coerción
## Warning in mask$eval_all_mutate(quo): NAs introducidos por coerción
## Warning in mask$eval_all_mutate(quo): NAs introducidos por coerción
## Warning in mask$eval_all_mutate(quo): NAs introducidos por coerción
str(unidades)
## 'data.frame': 7442 obs. of 25 variables:
## $ CODIGO_PROYECTO : Factor w/ 51 levels "1","3","5","6",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ CODIGO_ETAPA : int 1 1 1 1 1 1 1 1 1 1 ...
## $ ETAPA : chr "ETAPA 1" "ETAPA 1" "ETAPA 1" "ETAPA 1" ...
## $ TORRE : int 1 1 1 1 1 1 1 1 1 1 ...
## $ DCTO_DINAMICO : num 0 0 0 0 0 0 0 0 0 0 ...
## $ COLUMNA : int 3 3 3 3 3 3 3 3 3 3 ...
## $ PRODUCTO : chr "1003" "1103" "1203" "1303" ...
## $ PISO : int 10 11 12 13 14 15 16 17 18 3 ...
## $ MET_CUADRADO : num 74.2 74.2 74.2 74.2 74.2 ...
## $ PRECIO_BASE : num 4867 4907 4946 4907 4867 ...
## $ PRECIO_LISTA : num 5446 5490 5534 5490 5446 ...
## $ ORIENTACION : Factor w/ 14 levels "NOR ORIENTE",..: 12 12 12 12 12 12 12 12 12 12 ...
## $ TIPOLOGIA : Factor w/ 36 levels "1.5D/1B","1.5D/1B K",..: 10 10 10 10 10 10 10 10 10 10 ...
## $ DISPONIBILIDAD : chr "N" "N" "N" "N" ...
## $ VIGENCIA : chr "NULL" "NULL" "NULL" "NULL" ...
## $ FACTOR_IVA : num 0 0 0 0 0 0 0 0 0 0 ...
## $ ID : chr "000111D01003" "000111D01103" "000111D01203" "000111D01303" ...
## $ PRECIO_PROYECTADO : chr "4902.00" "4941.00" "4981.00" "4941.00" ...
## $ TIPO_PRODUCTO : Factor w/ 2 levels "DEPARTAMENTO",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ SUPERFICIE_INTERIOR : num 63380 63380 63380 63380 63380 ...
## $ SUPERFICIE_TERRAZA : num 10820 10820 10820 10820 10820 ...
## $ SUPERFICIE_JARDIN : num 0 0 0 0 0 0 0 0 0 0 ...
## $ SUPERFICIE_INTERIOR_MUNICIPAL: num 0 0 0 0 0 0 0 0 0 0 ...
## $ SUPERFICIE_TERRAZA_MUNICIPAL : num 0 0 0 0 0 0 0 0 0 0 ...
## $ SUPERFICIE_TOTAL_MUNICIPAL : num 0 0 0 0 0 0 0 0 0 0 ...
Cambiar los valores de las columnas qur tengan “0” o “NULL” a valores NA
DCTO_DINAMICO
VIGENCIA
SUPERFICIE_JARDIN
SUPERFICIE_INTERIOR_MUNICIPAL
SUPERFICIE_TERRAZA_MUNICIPAL
SUPERFICIE_TOTAL_MUNICIPAL
str(unidades)
## 'data.frame': 7442 obs. of 25 variables:
## $ CODIGO_PROYECTO : Factor w/ 51 levels "1","3","5","6",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ CODIGO_ETAPA : int 1 1 1 1 1 1 1 1 1 1 ...
## $ ETAPA : chr "ETAPA 1" "ETAPA 1" "ETAPA 1" "ETAPA 1" ...
## $ TORRE : int 1 1 1 1 1 1 1 1 1 1 ...
## $ DCTO_DINAMICO : num 0 0 0 0 0 0 0 0 0 0 ...
## $ COLUMNA : int 3 3 3 3 3 3 3 3 3 3 ...
## $ PRODUCTO : chr "1003" "1103" "1203" "1303" ...
## $ PISO : int 10 11 12 13 14 15 16 17 18 3 ...
## $ MET_CUADRADO : num 74.2 74.2 74.2 74.2 74.2 ...
## $ PRECIO_BASE : num 4867 4907 4946 4907 4867 ...
## $ PRECIO_LISTA : num 5446 5490 5534 5490 5446 ...
## $ ORIENTACION : Factor w/ 14 levels "NOR ORIENTE",..: 12 12 12 12 12 12 12 12 12 12 ...
## $ TIPOLOGIA : Factor w/ 36 levels "1.5D/1B","1.5D/1B K",..: 10 10 10 10 10 10 10 10 10 10 ...
## $ DISPONIBILIDAD : chr "N" "N" "N" "N" ...
## $ VIGENCIA : chr "NULL" "NULL" "NULL" "NULL" ...
## $ FACTOR_IVA : num 0 0 0 0 0 0 0 0 0 0 ...
## $ ID : chr "000111D01003" "000111D01103" "000111D01203" "000111D01303" ...
## $ PRECIO_PROYECTADO : chr "4902.00" "4941.00" "4981.00" "4941.00" ...
## $ TIPO_PRODUCTO : Factor w/ 2 levels "DEPARTAMENTO",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ SUPERFICIE_INTERIOR : num 63380 63380 63380 63380 63380 ...
## $ SUPERFICIE_TERRAZA : num 10820 10820 10820 10820 10820 ...
## $ SUPERFICIE_JARDIN : num 0 0 0 0 0 0 0 0 0 0 ...
## $ SUPERFICIE_INTERIOR_MUNICIPAL: num 0 0 0 0 0 0 0 0 0 0 ...
## $ SUPERFICIE_TERRAZA_MUNICIPAL : num 0 0 0 0 0 0 0 0 0 0 ...
## $ SUPERFICIE_TOTAL_MUNICIPAL : num 0 0 0 0 0 0 0 0 0 0 ...
library(visdat) # visualización de datos
library(naniar)
vis_dat(unidades)
vis_miss(unidades ,sort_miss = TRUE)
# cuenta de proyecto
proyectos <- unidades %>%
group_by(CODIGO_PROYECTO) %>%
summarise(TOTAL = sum(PRECIO_BASE))
proyectos
## # A tibble: 51 × 2
## CODIGO_PROYECTO TOTAL
## <fct> <dbl>
## 1 1 556992.
## 2 3 571255.
## 3 5 737629.
## 4 6 1129215.
## 5 7 570655
## 6 8 585538
## 7 9 670053.
## 8 10 709171
## 9 11 695265
## 10 12 592542
## # … with 41 more rows
# cuenta de ocurrencias
# por orientación
orientaciones <- aggregate(unidades$PRECIO_LISTA, by=list(unidades$ORIENTACION), FUN=length)
orientaciones
## Group.1 x
## 1 NOR ORIENTE 463
## 2 NOR ORIENTE SUR 12
## 3 NOR PONIENTE 486
## 4 NOR PONIENTE SUR 1
## 5 NORTE 1552
## 6 NORTE SUR 8
## 7 OP 15
## 8 OPN 28
## 9 OPS 5
## 10 ORIENTE 1170
## 11 PONIENTE 1277
## 12 SUR 1559
## 13 SUR ORIENTE 504
## 14 SUR PONIENTE 362
# utilizando dplyr es algo mas sencillo
orientaciones <- unidades %>% group_by(ORIENTACION) %>%
summarise(sum(PRECIO_LISTA),
cuenta = n()) %>%
subset(cuenta > 30 )
orientaciones
## # A tibble: 8 × 3
## ORIENTACION `sum(PRECIO_LISTA)` cuenta
## <fct> <dbl> <int>
## 1 NOR ORIENTE 4204400. 463
## 2 NOR PONIENTE 3761839. 486
## 3 NORTE 8172355. 1552
## 4 ORIENTE 6816611. 1170
## 5 PONIENTE 6632602. 1277
## 6 SUR 7541545. 1559
## 7 SUR ORIENTE 3540939. 504
## 8 SUR PONIENTE 2741837 362
ggplot(unidades, aes(x = ORIENTACION)) + geom_bar() +
theme(axis.text.x = element_text(angle = 90))
ggplot(unidades, aes(x=ORIENTACION, y=PRECIO_LISTA, colour=ORIENTACION)) + geom_point()+ggtitle("Titulo") +
theme(plot.title = element_text(hjust=0.5,face="bold", color = "red"),
axis.text.x = element_text(angle = 90))
# grafico 1
graf1 <- unidades %>%
ggplot(aes(x=ORIENTACION, y=PRECIO_LISTA, fill=ORIENTACION)) +
geom_boxplot() +
theme(
legend.position="none",
plot.title = element_text(size=11, # tamaño
hjust = 0.5, # centrado
face="bold", # estilo
color = "black"),
axis.text.x = element_text(angle = 90)
) +
xlab("Orientación") +
ylab("Precio lista") +
ggtitle("Unidades")
graf1
# grafico 1
graf2 <- unidades %>%
ggplot(aes(x=TIPOLOGIA, y=PRECIO_LISTA, fill=TIPOLOGIA)) +
geom_boxplot() +
theme(
legend.position="none",
plot.title = element_text(size=11, # tamaño
hjust = 0.5, # centrado
face="bold", # estilo
color = "black"),
axis.text.x = element_text(angle = 90)
) +
xlab("Tipología") +
ylab("Precio lista") +
ggtitle("Unidades")
graf2
ggplot(unidades, aes(ORIENTACION, TIPOLOGIA, fill=PRECIO_LISTA)) +
geom_tile()+
theme(axis.text.x = element_text(angle = 90))
# TIPOLOGIA
tipologias <- unidades %>% group_by(TIPOLOGIA) %>%
summarise(cuenta = n())
tipologias
## # A tibble: 36 × 2
## TIPOLOGIA cuenta
## <fct> <int>
## 1 1.5D/1B 792
## 2 1.5D/1B K 12
## 3 1.5D/2B 20
## 4 1D/1B 1836
## 5 1D/1B CA 48
## 6 1D/1B/K 309
## 7 2D/1B 66
## 8 2D/1B C 1
## 9 2D/1B/K(MD) 90
## 10 2D/2B 1000
## # … with 26 more rows
Referencia: