Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
154 lines (103 sloc) 6.49 KB
---
title: "Comparando bases de datos"
output: html_document
---
Este documento generado con Rmarkdown ([/analisis/montera34/compare-datasets.Rmd](https://github.com/montera34/airbnbeuskadi/blob/master/analisis/montera34/compare-datasets.Rmd)) está pensado para comparar dos bases de datos de Airbnb y poder evaluar los métodos de scraping.
```{r setup, include=FALSE, cache = TRUE}
# Instala y carga librerías
library(tidyverse)
# Carga datos
# introduce el path de tu archivo listings. Necesitas desactivar Quotes, porque el texto incluye \"
# listings_simple_1 <- read.delim("../../data/listings_gipuzkoa.csv",sep = ",")
listings_simple_1 <- read.delim("../../data/listings_donostia_simple.csv",sep = ",")
# listings_simple_2 <- read.delim("../../data/original/ng_gipuzkoa-20170401-0542.csv",sep = ",")
listings_simple_2 <- read.delim("../../data/ng_gipuzkoa-20170401-0542_donostia.csv",sep = ",")
```
+ DB1: Los datos de **Inside Airbnb** tienen `r nrow(listings_simple_1)` anuncios en Donostia (data/listings_donostia_simple.csv) seleccionados manualmente en QGIS para permitir seleccionar los que están geoposicionados en el mar y por tanto fuera del contorno de la provincia.
+ DB2: Los datos extraídos de la **API de mapa de Airbnb** contienen `r nrow(listings_simple_2)` anuncios en Donostia.
¿Qué anuncios tienen en común? ¿cuales no?
## Estas son las bases de datos sobre el mapa
```{r, echo = FALSE, warning=FALSE, message=FALSE}
# loading the required packages
library(ggmap)
qmplot(longitude, latitude, data = listings_simple_1, maptype = "toner-lite", color = I("red"),alpha = I(.2)) + labs(title= "DB1: data set 1" )
# Warning: Longitude y Latitude van en mayúsculas
qmplot(Longitude, Latitude, data = listings_simple_2, maptype = "toner-lite", color = I("blue"),alpha = I(.2)) + labs(title= "DB2: data set 2" )
```
## Comparando datasets
```{r, echo = FALSE, warning=FALSE}
# de 1 que no están en 2
db1_not_in_2 <- listings_simple_1[!(listings_simple_1$id %in% listings_simple_2$ID),]
db1_in_2 <- listings_simple_1[listings_simple_1$id %in% listings_simple_2$ID,]
# de 2 que no están en 1
db2_not_in_1 <- listings_simple_2[!(listings_simple_2$ID %in% listings_simple_1$id),]
db2_in_1 <- listings_simple_2[listings_simple_2$ID %in% listings_simple_1$id,]
```
```{r unique_ids, include=FALSE, cache = FALSE}
unique_listings_1 <- as.data.frame(listings_simple_1$id)
names(unique_listings_1)<-c("id")
unique_listings_2 <- as.data.frame(listings_simple_2$ID)
names(unique_listings_2)<-c("id")
unique_listings_p <- rbind(unique_listings_1, unique_listings_2)
# unique(listings_simple_1$id)
unique_listings <- as.data.frame(unique(unique_listings_p$id))
```
DB1 tiene **`r nrow(listings_simple_1)`** anuncios.
DB2 tiene **`r nrow(listings_simple_2)`** anuncios.
A. DB1 y DB2 tienen **`r nrow(db1_in_2)`** anuncios comunes.
B. La DB1 tiene **`r nrow(db1_not_in_2)`** anuncios que no están en la DB2.
C. La DB2 tiene **`r nrow(db2_not_in_1)`** anuncios que no están en la DB1.
Hay, por tanto **`r nrow(db1_not_in_2) + nrow(db2_not_in_1) + nrow(db2_in_1)` anuncios ** (A + B + C) diferentes en total entre las dos bases de datos. Que concuerda con el valor `r nrow(unique_listings)`, que son el número de valores de id únicos entre DB1 y DB2.
DB1 tiene **`r format(round(100*(nrow(listings_simple_1)/nrow(unique_listings)), 1))`%** de los anuncios combinados de las dos bases de datos.
DB2 tiene **`r format(round(100*(nrow(listings_simple_2)/nrow(unique_listings)), 1))`% **de los anuncios combinados de las dos bases de datos.
```{r, echo = FALSE, warning=FALSE, message=FALSE}
qmplot(longitude, latitude, data = db1_not_in_2, maptype = "toner-lite", color = I("red"),alpha = I(.2)) + labs(title= "data set 1 anuncios que no están en data set 2" )
qmplot(Longitude, Latitude, data = db2_not_in_1, maptype = "toner-lite", color = I("blue"),alpha = I(.2)) + labs(title= "data set 2 anuncios que no están en data set 1" )
```
## Lista de anuncios que no están en las dos bases de datos
### Estos son los anuncios que están en DB1 pero no en DB2:
```{r, echo = FALSE, warning=FALSE}
# Load "knitr"
library(knitr,quietly=T)
kable(db1_not_in_2[,c(1,5,2)]) #TODO: call name of columns
```
### Estos son los anuncios que están en DB1 pero no en DB2:
```{r, echo = FALSE, warning=FALSE}
kable(db2_not_in_1[,c(3,10,7)]) #TODO: call name of columns
```
### Listado de anuncios que están en DB1 y DB2:
```{r, echo = FALSE, warning=FALSE}
kable(db1_in_2[,c(1,5,2)]) #TODO: call name of columns
```
## Datos
### InsideAirbnb
+ InsideAirbnb.com/euskadi
+ Fecha scraping: 2017-03-24
El subset de datos de Donosti (https://github.com/montera34/airbnbeuskadi/blob/master/data/listings_donostia_simple.csv) se ha realizado con el script de R (https://github.com/montera34/airbnbeuskadi/blob/master/prepare-segmented-files.R) a partir de datos limpiados con openrefine para los nombres de los municipios.
### API de mapa de AirBnB
+ API
+ Fecha scraping: 2017-04-01
El subset de datos de Donosti se ha realizado con QGIS seleccionando los anuncios con herramienta de selección manual que estabn en el polígono de Donostia para poder incluir los que estaban ubicados en el mar.
```{r, echo = FALSE, warning=FALSE}
# Merge datasets
# Select columns that are common in both in the same order
db1_in_2_simple <- db1_in_2[,c(1,38,39,49,43,42,11,13)]
db1_not_in_2_simple <- db1_not_in_2[,c(1,38,39,49,43,42,11,13)]
db2_not_in_1_simple <- db2_not_in_1[,c(3,5,6,8,9,10,14,15)]
# change name of variables in DB2
names(db2_not_in_1_simple)<-c("id","latitude","longitude","price","accommodates","room_type","host_id","host_name")
db1_in_2_simple$price <- as.numeric(as.character(db1_in_2_simple$price))
db1_not_in_2_simple$price <- as.numeric(as.character(db1_not_in_2_simple$price))
db2_not_in_1_simple$price <- as.numeric(as.character(db2_not_in_1_simple$price))
temp <- rbind(db1_in_2_simple,db1_not_in_2_simple)
temp$price <- as.integer(temp$price)
# Merge datasets
complete_dataset <- rbind(temp,db2_not_in_1_simple)
# Converts to character, uniform name of values, convert to fator again
complete_dataset$room_type <- as.character(complete_dataset$room_type)
complete_dataset$room_type[complete_dataset$room_type == "private_room"] <- "Private Room"
complete_dataset$room_type[complete_dataset$room_type == "entire_home"] <- "Entire home/apt"
complete_dataset$room_type <- as.factor(complete_dataset$room_type)
# levels(complete_dataset$room_type)
write.table(complete_dataset, "../../data/listings_donostia_merged.csv", sep=",", row.names=FALSE)
```