Precios de hoteles de 4 y 5 estre en CABA 2018

Lo que busco en este trabajo es analizar el comportamiento de los precios de hoteles de booking con las herramientas aprendidas en el curso.

Activando los paquetes que se van a utilizar

library (tidyverse)
## Registered S3 methods overwritten by 'ggplot2':
##   method         from 
##   [.quosures     rlang
##   c.quosures     rlang
##   print.quosures rlang
## -- Attaching packages --------------------------------------------------------------------------------- tidyverse 1.2.1 --
## v ggplot2 3.1.1     v purrr   0.3.2
## v tibble  2.1.3     v dplyr   0.8.1
## v tidyr   0.8.3     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.4.0
## -- Conflicts ------------------------------------------------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library (sf)
## Linking to GEOS 3.6.1, GDAL 2.2.3, PROJ 4.9.3
library (readxl)

Base de datos

Para este trabajo se usara una base de precios de hoteles de 4 y 5 estrellas surgida del escrapeo al sitio booking. La base abarca todo el año 2018, existiendo un csv por cada día del mes con el revelamiento de datos del sitio, cabe aclarar que no existen revelamientos de todos los días del año.

Para realizar el análisis se tendrá en cuenta solo habitaciones estándar, para 2 adultos sin niños. Ademas de eliminarse variables irrelevantes para el análisis con el fin de aligerar el peso de la base para hacer posible su tratamiento. El dataset posee archivos duplicados, debido a que se chequea el precio de una habitación en un día y luego al día siguiente, por lo que se eliminaran estas observaciones.

Precios Enero

precios_enero <- data.frame()


for (i in c(15:25)) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
  precios_dia <- precios_dia %>%
    filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
    mutate (mes = "enero") 
    
  
  precios_enero <- rbind(precios_enero, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-15.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-16.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-17.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-18.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-19.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-20.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-21.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-22.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-23.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-24.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-25.csv"
for (i in c(27:30)) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
  precios_dia <- precios_dia %>%
    filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
    mutate (mes = "enero") 
    
  
  precios_enero <- rbind(precios_enero, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-27.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-28.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-29.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-1-30.csv"
write.csv2(precios_enero, file = "precios_enero.csv")

Precio Febrero

precios_febrero <- data.frame()


for (i in c(5:25)) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
 precios_dia <- precios_dia %>%
    filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
   
    mutate (mes = "febrero") 
    
  
  precios_febrero <- rbind(precios_febrero, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-5.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-6.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-7.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-8.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-9.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-10.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-11.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-12.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-13.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-14.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-15.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-16.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-17.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-18.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-19.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-20.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-21.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-22.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-23.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-24.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-25.csv"
for (i in c(27:28)) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
 precios_dia <- precios_dia %>%
    filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
   
    mutate (mes = "febrero") 
    
  
  precios_febrero <- rbind(precios_febrero, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-27.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-2-28.csv"
write.csv2(precios_febrero, file = "precios_febrero.csv")

Precios Marzo

Luego de dos ponderaciones descubrí que había una mejor forma de saltear las observaciones faltantes, al menos no fue en el mes final.

precios_marzo <- data.frame()


for (i in c(5:17 , 19:22 , 24 ,  27:31)) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
  precios_dia <- precios_dia %>% 
    filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
    mutate (mes = "marzo") 
    
  
  precios_marzo <- rbind(precios_marzo, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-5.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-6.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-7.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-8.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-9.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-10.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-11.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-12.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-13.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-14.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-15.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-16.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-17.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-19.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-20.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-21.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-22.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-24.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-27.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-28.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-29.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-30.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-3-31.csv"
write.csv2(precios_marzo, file = "precios_marzo.csv")

Precios Abril

precios_abril <- data.frame()


for (i in c(1:14 , 16:23 , 28)) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
  precios_dia <- precios_dia %>% 
   filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
    mutate (mes = "abril") 
    
  
  precios_abril <- rbind(precios_abril, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-1.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-2.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-3.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-4.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-5.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-6.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-7.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-8.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-9.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-10.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-11.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-12.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-13.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-14.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-16.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-17.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-18.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-19.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-20.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-21.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-22.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-23.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-4-28.csv"
write.csv2(precios_abril, file = "precios_abril.csv")

Precio Mayo

precios_mayo <- data.frame()


for (i in c(1:5 , 7 , 12 , 14:31)) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
  precios_dia <- precios_dia %>% 
   filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
    mutate (mes = "mayo") 
    
  
  precios_mayo <- rbind(precios_mayo, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-1.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-2.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-3.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-4.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-5.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-7.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-12.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-14.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-15.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-16.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-17.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-18.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-19.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-20.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-21.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-22.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-23.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-24.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-25.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-26.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-27.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-28.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-29.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-30.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-5-31.csv"
write.csv2(precios_mayo, file = "precios_mayo.csv")

Precios Junio

precios_junio <- data.frame()


for (i in c(1 , 2 , 17:29)) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
  precios_dia <- precios_dia %>% 
   filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
    mutate (mes = "junio") 
    
  
  precios_junio <- rbind(precios_junio, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-1.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-2.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-17.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-18.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-19.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-20.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-21.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-22.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-23.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-24.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-25.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-26.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-27.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-28.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-6-29.csv"
write.csv2(precios_junio, file = "precios_junio.csv")

Precios Julio

precios_julio <- data.frame()


for (i in c(1:12 , 14:16, 18, 20:25, 27 )) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
  precios_dia <- precios_dia %>% 
   filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
    mutate (mes = "julio") 
    
  
  precios_julio <- rbind(precios_julio, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-1.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-2.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-3.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-4.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-5.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-6.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-7.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-8.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-9.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-10.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-11.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-12.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-14.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-15.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-16.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-18.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-20.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-21.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-22.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-23.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-24.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-25.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-7-27.csv"
write.csv2(precios_julio, file = "precios_julio.csv")

Precios Agosto

precios_agosto <- data.frame()


for (i in c(22, 24, 26:31)) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-8-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
  precios_dia <- precios_dia %>% 
    filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
    mutate (mes = "agosto") 
    
  
  precios_agosto <- rbind(precios_agosto, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-8-22.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-8-24.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-8-26.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-8-27.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-8-28.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-8-29.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-8-30.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-8-31.csv"
write.csv2(precios_agosto, file = "precios_agosto.csv")

Precios Septiembre

precios_septiembre <- data.frame()


for (i in c(1:30)) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
  precios_dia <- precios_dia %>% 
    filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
    mutate (mes = "septiembre") 
    
  
  precios_septiembre <- rbind(precios_septiembre, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-1.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-2.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-3.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-4.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-5.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-6.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-7.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-8.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-9.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-10.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-11.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-12.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-13.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-14.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-15.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-16.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-17.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-18.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-19.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-20.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-21.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-22.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-23.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-24.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-25.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-26.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-27.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-28.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-29.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-9-30.csv"
write.csv2(precios_septiembre, file = "precios_septiembre.csv")

Precios Octubre

precios_octubre <- data.frame()


for (i in c(1:31)) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
  precios_dia <- precios_dia %>% 
    filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
    mutate (mes = "octubre") 
    
  
  precios_octubre <- rbind(precios_octubre, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-1.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-2.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-3.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-4.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-5.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-6.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-7.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-8.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-9.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-10.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-11.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-12.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-13.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-14.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-15.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-16.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-17.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-18.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-19.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-20.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-21.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-22.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-23.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-24.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-25.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-26.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-27.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-28.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-29.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-30.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-10-31.csv"
write.csv2(precios_octubre, file = "precios_octubre.csv")

Precios Noviembre

precios_noviembre <- data.frame()


for (i in c(1:30)) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
  precios_dia <- precios_dia %>% 
    filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
    mutate (mes = "noviembre") 
    
  
  precios_noviembre <- rbind(precios_noviembre, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-1.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-2.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-3.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-4.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-5.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-6.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-7.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-8.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-9.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-10.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-11.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-12.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-13.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-14.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-15.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-16.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-17.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-18.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-19.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-20.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-21.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-22.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-23.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-24.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-25.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-26.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-27.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-28.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-29.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-11-30.csv"
write.csv2(precios_noviembre, file = "precios_noviembre.csv")

Precios Diciembre

precios_diciembre <- data.frame()


for (i in c(1:2 , 10:21, 23:29)) {
  

  archivo <- paste0("C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-", i, ".csv")             
  print(archivo)
  
  precios_dia <- read.csv2(archivo)
  
  precios_dia <- precios_dia %>% 
   filter (ventana_original == ventana_tiempo) %>% 
    filter (cant_adultos == 2, cant_niños == 0) %>% 
    filter (habitacion_tipo == "Estandar")      %>% 
    select (id_hotel, fecha_bajada, precio_total, habitacion_tipo, ventana_original, sin_devolucion, fecha_checkin, fecha_checkout) %>%
    mutate (mes = "diciembre") 
    
  
  precios_diciembre <- rbind(precios_diciembre, precios_dia)
  
}
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-1.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-2.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-10.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-11.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-12.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-13.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-14.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-15.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-16.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-17.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-18.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-19.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-20.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-21.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-23.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-24.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-25.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-26.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-27.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-28.csv"
## [1] "C:/Users/Pabca/Desktop/precios booking/Bases precios/2018/precios-2018-12-29.csv"
write.csv2(precios_diciembre, file = "precios_diciembre.csv")
remove (precios_dia)
remove (archivo)
remove (i)

Precios 2018

Ahora voy a juntar todos los meses procesados en un solo dataset y exportarlo como csv para facilitar el tratamiento. Ademas iré eliminando los datasets de los meses ya utilizado.

precios2018 <- rbind  (precios_enero,precios_febrero,precios_marzo,precios_abril)
               remove (precios_enero,precios_febrero,precios_marzo,precios_abril)


precios2018 <- rbind  (precios2018, precios_mayo, precios_junio, precios_julio,precios_agosto)
               remove (precios_mayo, precios_junio, precios_julio,precios_agosto)


precios2018 <- rbind  (precios2018, precios_septiembre, precios_octubre, precios_noviembre, precios_diciembre)
               remove (precios_septiembre, precios_octubre, precios_noviembre, precios_diciembre)


write.csv2(precios2018, file= "precios_booking_2018.csv")

Ahora vamos a limpiar un poco mas el dataset, las variables fecha_bajada y las checkin y checkout tienen esta forma: 2018-01-15 00:00:00.000 voy a eliminar los 0 y quedarme solo con la fecha.

precios2018 <- precios2018 %>% 
               mutate (fecha = substr (fecha_bajada,0,10)) %>% 
               mutate (checkin = substr (fecha_checkin,0,10)) %>% 
               mutate (checkout = substr (fecha_checkout,0,10))

precios2018 <- select(precios2018, -fecha_bajada, -fecha_checkin, -fecha_checkout)

Crearé una variable que diga solamente el mes en el que se realizo el checkin

precios2018 <- mutate(precios2018, mes_checkin = substr(checkin, 6 , 7))

Descubrí un problema con mi dataset luego de algunos intentos por realizar cosas y es que se toma a precio_total por letra. Luego de investigar y intentar infructuosamente convertir la variable en numero creo que ya se como hacerlo.

precios2018 <- mutate(precios2018, precio = as.numeric(as.character(precios2018$precio_total)))
precios2018 <- select(precios2018, -precio_total)

Al parecer funcionó, había que convertir antes la variable en carácter antes de en numero, ya que cuando la convertía directo en numero el resultado era cualquier cosa.

Voy a chequear que todo este bien haciendo un sumario

summarise(precios2018,
          promedio = mean(precio),
          min = min (precio), 
          max = max (precio))
##   promedio min    max
## 1 217.9882   9 305400

Y como era de esperar, todo no esta bien. Hay un valor extremadamente alto, creo que ningún hotel en CABA cobra 305400 dolares una habitación por una noche. Vamos a chequear esperando que solo sea un outlier.

options(scipen =20 )
ggplot(precios2018) + geom_point(aes(x = mes_checkin, y = precio))

Bueno, no era solo uno :/ vamos a ver si el error esta en la carga de algún mes especifico

ggplot(precios2018) + geom_point(aes(x = mes, y = precio))

Y así es, al parecer hay errores en el escrapeo de valores en noviembre, vamos a ver si es en algún día especifico del mes

precios2018 %>% 
  filter(mes == "noviembre") %>% 
  ggplot() + geom_point(aes(x = fecha, y = precio))

Se ve que no se producen los errores durante todo el mes, pero tampoco en un solo día de carga, se dan en un intervalo que no podemos apreciar con precisión, para eso vamos ver solo los días que tienen un precio mayor a 100000.

 precios2018 %>% 
 filter (precio > 100000) %>% 
 ggplot() + geom_point(aes(x = fecha, y = precio))

Si se agranda el gráfico se de que los outliers comienzan el 3 de noviembre y terminan el 14.

Luego de revistar un poco los csv cargados encontré el error que producía estos outliers, hubo un error en la carga del precio del desayuno en esos días, por lo que había desayunos de mas de 100 mil dolares.

Como se explicó se tomaron en cuenta las habitaciones con desayuno y aquellos que no estaban incluidos se les sumo el precio promedio del hotel. Por lo que voy a proceder a eliminar estos valores, sabiendo que solo estoy eliminando del análisis habitaciones sin desayuno incluido relevadas entre el día 3 y 14 de noviembre del año 2018.

precios2018 <- filter(precios2018, precio < 90000 )

Vamos a ver si la eliminación fue efectiva

summarise(precios2018,
          promedio = mean(precio),
          min = min (precio), 
          max = max (precio))
##   promedio min  max
## 1 143.6226   9 7800
options(scipen =20 )
ggplot(precios2018) + geom_point(aes(x = mes_checkin , y = precio))

Continuan viendose precios raros, por lo que vamos a chequear un poco mas que pasa.

options(scipen =20 )
ggplot(precios2018) + geom_point(aes(x = mes , y = precio))

precios2018 %>% 
  filter (mes == "enero") %>% 
  filter (precio > 2000) %>% 
  ggplot() + geom_point(aes(x= fecha , y = precio))

Luego de chequear estos días descubro que otra vez el error proviene de la suma entre el desayuno y el precio del hotel sin el mismo, sumandose un desayuno en miles.

Al dudar completamente de la credibilidad de la agregación del desayuno al precio del hotel tome la determinación de solo tener en cuenta a aquellos hoteles con desayuno incluido y por lo tanto usar la columna de la base llamada precio_día que contiene el precio de la habitación solamente.

Ahora para hacer lo que proclame voy a remover la selección de columnas al cargar la base en el código ya escrito y lo voy a correr devuelta para tener la variable que indica solo el precio del hotel por lo que aparecerá el nuevo dataset sin explicación y por arte de magia.

remove(precios2018)
precios2018v2 <- read_csv("C:/Users/Pabca/Desktop/precios2018v2.csv")
## Warning: Missing column names filled in: 'X1' [1]
## Parsed with column specification:
## cols(
##   .default = col_double(),
##   habitacion_nombre = col_character(),
##   habitacion_servicios = col_character(),
##   habitacion_tipo = col_character(),
##   mes = col_character(),
##   fecha = col_date(format = ""),
##   checkin = col_date(format = ""),
##   checkout = col_date(format = ""),
##   mes_checkin = col_character()
## )
## See spec(...) for full column specifications.

vamos a chequear ahora que el precio diario sin desayuno no tenga errores.

ggplot(precios2018v2) + geom_point(aes( x= mes , y = precio_diario ))

Al parecer esta variable no contiene errores significantes como la anterior, el outlier de febrero tiene explicación, cuenta la leyenda de los pasillos del ente de turismo que algunos hoteles al no querer ofrecer habitaciones en booking en ciertos momentos por subidas de demanda imputan un elevado precio para disuadir al turista de reservar por esta vía.

Vamos a trabajar con esta variable ahora, pero para ello vamos a eliminar de las observaciones todos aquellos hoteles que no poseen desayuno incluido.

precios2018v2 <- filter(precios2018v2, desayuno == 1)

Antes de pasar a analizar el dataset vamos a hacerle uno retoques mas.

precios2018v2 <- mutate(precios2018v2, tiempo_reserva = as.character(ventana_original))

Por ultimo pero no menos importante, los hoteles relevados pertenecen a la Ciudad de Buenos Aires, Lima y Santiago, por lo que debemos eliminar los pertenecientes a las otras dos ciudades, pero no tenemos forma de saber con este dataset la ciudad a la que pertenece el hotel, por los que vamos a cargar una base de datos que contiene el id_del hotel con su ubicación y ciudad de origen.

hoteles <- read_excel("C:/Users/Pabca/Desktop/Ubicacion_hoteles_booking.xlsx")

Ahora vamos a joinear ambos dataset de manera de luego poder filtrar solamente los precios relevados pertenecientes a CABA.

precios2018v2 <- precios2018v2 %>% 
  left_join(hoteles, BY = id_hotel)
## Joining, by = "id_hotel"
remove(hoteles)

Ahora de manera sencilla podemos filtrar solo aquellos hoteles que pertenecen a la Ciudad.

precios2018v2 <- filter(precios2018v2, id_ciudad == "Buenos Aires")

Análisis

Primero quiero observar si existe una variación en el precio de las habitaciones del hotel de acuerdo al mes en el que se produzca el checkin.

precios2018v2 %>% 
  
  ggplot() + geom_boxplot( aes (x = reorder (mes_checkin, precio_diario , FUN = median ) , y = precio_diario ,          fill = mes_checkin)) + 
  
   geom_point (aes (x = mes_checkin , y= mean(precio_diario)), color = "red" ) +
  
  theme(legend.position = "none") +
  
   scale_y_log10() + 
  
   labs(title = "Precios hoteles según mes, ordenado por mediana" ,
       x = "Mes" ,
       y = "Precio noche" ,
       fill = "Mes")

precios2018v2 %>% 
  
  ggplot() + geom_boxplot( aes (x = reorder (mes_checkin, precio_diario , FUN = mean ) , y = precio_diario ,          fill = mes_checkin)) + 
  
   geom_point (aes (x = mes_checkin , y= mean(precio_diario)), color = "red" ) +
  
  theme(legend.position = "none") +
  
   scale_y_log10() + 
  
   labs(title = "Precios hoteles según mes, ordenado por mediana" ,
       x = "Mes" ,
       y = "Precio noche" ,
       fill = "Mes")

precios2018v2 %>% 
  group_by(mes_checkin) %>% 
  summarise( Media = mean (precio_diario),
             Mediana = median (precio_diario),
             Min = min (precio_diario), 
             Max = max (precio_diario))
## # A tibble: 12 x 5
##    mes_checkin Media Mediana   Min   Max
##    <chr>       <dbl>   <dbl> <dbl> <dbl>
##  1 01           120.    104   33.9  799 
##  2 02           121.    105   36.2 7800 
##  3 03           131.    115   36.2 2062.
##  4 04           129.    114.  36.2 1708.
##  5 05           126.    110   36.2 1299 
##  6 06           122.    107.  33.8 1500 
##  7 07           131.    115.  35   1299 
##  8 08           125.    110.  34.4  600 
##  9 09           130.    115.  36.2 1350 
## 10 10           151.    130    9   1299 
## 11 11           145.    125   36.2 1299 
## 12 12           124.    107.  33.9 1299

Podemos ver que los precios difieren tanto en mediana como media acorde al mes en el que se produce el checkin, ademas difiere la variación de los precios de los mismos. La conclusión que podemos sacar de esto es que los meses mas caros para visitar la Ciudad (si se reserva hotel vía booking) en 2018 fueron octubre y noviembre, mientras que los mas baratos fueron enero y febrero.

Vamos a ver ahora como varían los precios acorde a los días de anticipación con los cuales reservemos la habitación.

precios2018v2 %>%
  
  ggplot() + 
  
  geom_boxplot (aes (x = reorder (tiempo_reserva, precio_diario , FUN = median ) ,  
                    y = precio_diario , fill = tiempo_reserva)) +
                    
    
  
   geom_point (aes (x = tiempo_reserva , y= mean(precio_diario)), color = "red" ) +
  
  theme(legend.position = "none") +
     
  scale_y_log10() +
  
  labs(title = "Precios según días de anticipación de reserva ordenado por mediana" ,
       x = "Días de anticipación" ,
       y = "Mes" ,
       fill = "Días de anticipación")

precios2018v2 %>%
  
  ggplot() + 
  
  geom_boxplot (aes (x = reorder (tiempo_reserva, precio_diario , FUN = mean ) ,  
                    y = precio_diario , fill = tiempo_reserva)) +
                    
    
  
   geom_point (aes (x = tiempo_reserva , y= mean(precio_diario)), color = "red" ) +
  
  theme(legend.position = "none") +
     
  scale_y_log10() +
  
  labs(title = "Precios según días de anticipación de reserva ordenado por media" ,
       x = "Días de anticipación" ,
       y = "Mes" ,
       fill = "Días de anticipación")

precios2018v2 %>% 
  group_by (tiempo_reserva) %>% 
  summarise( Media = mean (precio_diario),
             Mediana = median (precio_diario),
             Min = min (precio_diario), 
             Max = max (precio_diario))
## # A tibble: 7 x 5
##   tiempo_reserva Media Mediana   Min   Max
##   <chr>          <dbl>   <dbl> <dbl> <dbl>
## 1 0               127.    102   33.8 2062.
## 2 14              128.    111.  33.9 1157.
## 3 168             137.    120   36.2  717 
## 4 28              126.    110   35    900 
## 5 56              127.    111.  35.3 1708.
## 6 7               126.    109.  33.9 7800 
## 7 84              129.    114.   9    849.

Es un poco sorprendente lo que hallamos acá, mientras realices una reserva con mayor anticipación es más probable que pagues un precio mayor por la habitación, aunque puede observarse que a menor anticipación hay más cantidad de habitaciones con precios más elevados que la mediana, por lo que puede que efectivamente termines pagando un precio muy superior. Ademas, a diferencia del precio por mes de checkin, puede apreciarse que existe una diferencia entre la media y la mediana que provoca que cambie el orden de los dias anticipacion que provocan un precio más barato.

Veamos gráficamente ahora la influencia del tiempo de reserva acorde al mes del checkin.

precios2018v2 %>% 
  ggplot() + 
  
  geom_boxplot( aes (x = reorder (tiempo_reserva, precio_diario , FUN = median ) , y = precio_diario , fill = tiempo_reserva)) +
  
  geom_point (aes (x = tiempo_reserva , y= mean(precio_diario)), color = "red" ) +
  
  theme(legend.position = "none") +
  
  scale_y_log10() +
  
  facet_wrap (~mes_checkin)+

  labs(title = "Precios hoteles 4 y 5 estrellas Según mes de checkin y días de anticipación  de la reserva" ,
       x = "Días anticipación de la reserva" ,
       y = "Precio noche" ,
       fill = "Días anticipación")

Se observan variaciones en la variación de las medianas de precios acorde a la cantidad de días de anticipación según cual sea el mes en el cual se produce efectivamente el checkin.

Mapa

Veamos ahora donde se ubican los hoteles que fueron relevados para conformar la muestra de precios, para ello cargaremos un dataset que contiene la latitud y la longitud de los hoteles relevados.

Vamos a cargar un mapa de CABA y agruparlo por barrios.

mapa_caba <- st_read("http://cdn.buenosaires.gob.ar/datosabiertos/datasets/informacion-censal-por-radio/CABA_rc.geojson")
## Reading layer `CABA_rc' from data source `http://cdn.buenosaires.gob.ar/datosabiertos/datasets/informacion-censal-por-radio/CABA_rc.geojson' using driver `GeoJSON'
## Simple feature collection with 3554 features and 8 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: -58.53092 ymin: -34.70574 xmax: -58.33455 ymax: -34.528
## epsg (SRID):    4326
## proj4string:    +proj=longlat +datum=WGS84 +no_defs
mapa_caba_barrio<- mapa_caba %>% 
  group_by(BARRIO) %>% 
  summarise(POBLACION = sum(POBLACION),
            VIVIENDAS = sum(VIVIENDAS),
            HOGARES = sum(HOGARES),
            HOGARES_NBI = sum(HOGARES_NBI)
            )

Ahora vamos a ubicar en el mapa a los hoteles relevados. Ademas vamos a colorea el mapa acorde al ratio hogares con necesidades básicas insatisfecha sobre hogares.

precios2018v2 %>% 
  group_by (id_hotel) %>% 
  ggplot() + 
  geom_sf(data = mapa_caba_barrio, aes(fill = BARRIO)) +
  theme(legend.position = "none") +
  geom_point (aes(x= longitud , y = latitud), color= "red") 

Podemos ver que existe una gran concentracion de hoteles en ciertas zonas especificas de la ciudad, estas son Palermo, Recoleta y Retiro mayormente.

  precios2018v2 %>% 
  group_by(barrio) %>% 
  summarise( Media = mean (precio_diario),
             Mediana = median (precio_diario),
             Min = min (precio_diario), 
             Max = max (precio_diario))
## # A tibble: 11 x 5
##    barrio        Media Mediana   Min    Max
##    <chr>         <dbl>   <dbl> <dbl>  <dbl>
##  1 Balvanera     108.    104    56.9  500  
##  2 Belgrano      116.    111.   52.1  301  
##  3 Colegiales    117.    130    97    130  
##  4 Montserrat    102.     90.8   9   1708. 
##  5 Palermo       148.    135    57   7800  
##  6 Puerto Madero 316.    259   137.   789  
##  7 Recoleta      158.    144    47.4 1080  
##  8 Retiro        119.    103.   41.2 2062. 
##  9 San Nicolas   122.    105.   33.8 1299  
## 10 San Telmo     104.     97    34.4 1157. 
## 11 Villa Urquiza  67.4    68.1  42.2   99.8

Ademas, podemos observar en que barrios es más caro alquilar una habitación siendo Puerto Madero el mas expensivo y si queremos ir al hotel de Villa urquiza es el menor.

Regresión

Vamos a chequear mediante una regresión si las conclusiones que veniamos sacando graficamente son estadisticamente ciertas, además veremos el impacto en el precio de que una reserva de habitación no posea devolución.

Usaremos como nivel de significacion de relevancia un alfa de 0.05, por lo cual si el error que cometemos al afirmar la que la variable es significativa para el comportamiento del precio es menor al mismo daremos la hipotesis por valida.

Testere la significancia de los parametros en regresiones separadas para no contaminar el analisis con problemas de correlacion y heterocedasticidad entre la variaza de las variables.

modelo_precio_checkin <- lm (precio_diario ~ mes_checkin, data = precios2018v2)
summary (modelo_precio_checkin)
## 
## Call:
## lm(formula = precio_diario ~ mes_checkin, data = precios2018v2)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -141.6  -41.2  -16.1   21.0 7679.3 
## 
## Coefficients:
##               Estimate Std. Error t value             Pr(>|t|)    
## (Intercept)   119.6989     0.3683 325.039 < 0.0000000000000002 ***
## mes_checkin02   0.9739     0.5073   1.920               0.0549 .  
## mes_checkin03  11.3703     0.5121  22.204 < 0.0000000000000002 ***
## mes_checkin04   8.8389     0.4907  18.013 < 0.0000000000000002 ***
## mes_checkin05   6.3051     0.4887  12.901 < 0.0000000000000002 ***
## mes_checkin06   2.5460     0.5149   4.945          0.000000762 ***
## mes_checkin07  11.0781     0.5075  21.829 < 0.0000000000000002 ***
## mes_checkin08   5.2506     0.5454   9.627 < 0.0000000000000002 ***
## mes_checkin09  10.5875     0.5276  20.067 < 0.0000000000000002 ***
## mes_checkin10  30.9346     0.5518  56.063 < 0.0000000000000002 ***
## mes_checkin11  25.2221     0.5307  47.530 < 0.0000000000000002 ***
## mes_checkin12   4.7597     0.5012   9.496 < 0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 66.28 on 409538 degrees of freedom
## Multiple R-squared:  0.01564,    Adjusted R-squared:  0.01561 
## F-statistic: 591.6 on 11 and 409538 DF,  p-value: < 0.00000000000000022

Podemos observar que el precio difiere estadisticamente acorde al mes en el que se produzca el chekin. Enero, febrero son los meses mas baratos para visitar la ciudad y no existe una diferencia significativa en su precio, mientras que los meses mas caros para visitarla son octubre y noviembre, dichos meses se pago en 2018 en promedio 30 y 25 dolares mas que en enero respectivamente.

modelo_precio_reserva <- lm (precio_diario ~ tiempo_reserva, data = precios2018v2)
summary (modelo_precio_reserva)
## 
## Call:
## lm(formula = precio_diario ~ tiempo_reserva, data = precios2018v2)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -120.4  -41.7  -16.9   21.8 7673.6 
## 
## Coefficients:
##                   Estimate Std. Error t value             Pr(>|t|)    
## (Intercept)       126.7126     0.4085 310.182 < 0.0000000000000002 ***
## tiempo_reserva14    1.0883     0.4912   2.216               0.0267 *  
## tiempo_reserva168  10.2617     0.4843  21.189 < 0.0000000000000002 ***
## tiempo_reserva28   -0.4126     0.4852  -0.850               0.3951    
## tiempo_reserva56    0.1174     0.4811   0.244               0.8073    
## tiempo_reserva7    -0.2633     0.4993  -0.527               0.5979    
## tiempo_reserva84    2.6849     0.4805   5.588          0.000000023 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 66.71 on 409543 degrees of freedom
## Multiple R-squared:  0.003044,   Adjusted R-squared:  0.003029 
## F-statistic: 208.4 on 6 and 409543 DF,  p-value: < 0.00000000000000022

Vemos que lo que observamos graficamente realmente no es tan cierto. No existe una diferenncia significatia de precios si reservamos sin anticipación o si lo hacemos con 7, 28 o 56 dias de anticipación mientras que si reservamos con 14, 84 i 168 dias de anticipación pagariamos más por la habitación significativamente.

modelo_precio_zona <- lm (precio_diario ~ barrio, data = precios2018v2)
summary (modelo_precio_zona)
## 
## Call:
## lm(formula = precio_diario ~ barrio, data = precios2018v2)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -179.1  -37.4  -13.3   16.3 7652.2 
## 
## Coefficients:
##                     Estimate Std. Error t value             Pr(>|t|)    
## (Intercept)         107.6533     0.7947 135.458 < 0.0000000000000002 ***
## barrioBelgrano        8.6226     0.9838   8.764 < 0.0000000000000002 ***
## barrioColegiales      9.6212     1.5573   6.178      0.0000000006492 ***
## barrioMontserrat     -5.4462     0.8374  -6.504      0.0000000000784 ***
## barrioPalermo        40.1399     0.8210  48.890 < 0.0000000000000002 ***
## barrioPuerto Madero 208.8198     1.1572 180.448 < 0.0000000000000002 ***
## barrioRecoleta       50.8234     0.8456  60.104 < 0.0000000000000002 ***
## barrioRetiro         10.8477     0.8243  13.160 < 0.0000000000000002 ***
## barrioSan Nicolas    14.0953     0.8166  17.260 < 0.0000000000000002 ***
## barrioSan Telmo      -3.8681     0.9007  -4.295      0.0000175045104 ***
## barrioVilla Urquiza -40.2715     1.4239 -28.282 < 0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 60.49 on 409539 degrees of freedom
## Multiple R-squared:  0.1802, Adjusted R-squared:  0.1802 
## F-statistic:  9004 on 10 and 409539 DF,  p-value: < 0.00000000000000022

El precio de la habitación varia significativamente segun se la zona en la cual se ubica el hotel, confirmando lo que habiamos observado anteriormente. Ademas la ubacación del hotel explica en gran parte el precio de la habitación, un 18% del precio se explica por esto.

Conclusión

Existen muchos factores que explican el precio de una habitación de hotel, pero algunos de los mas importantes son el mes de checkin, el tiempo con el que se realiza la reserva y la zona en la que se ubica el hotel. En 2018 reservar una habitación en los primeros meses del año provocó un pago menor que en el resto de los meses mientras que octubre y noviembre fueron los meses mas caros para visitar la ciudad. Ademas reservar con mucho tiempo de anticipación no es conveniente ya que quienes lo hicieron en 2018 terminaron pagando un precio mas elevado por noche. Tampoco es igual la ubicación en la que se encuentra el hotel esto puede deberse a que acorde a la zona se agrupan hoteles de una similar categoria y lujos y servicios ofrecidos.