Commit 274b928e authored by Montera34's avatar Montera34

Merge branch 'patch-1' into 'master'

script_R_licencias_airbnb_valencia

See merge request airbnb/valencia!5
parents 129dfe18 d9d15363
library(tidyverse)
datos <- read.csv("./data/original/airbnb/190227/listings_valencia_insideairbnb.csv")
# Cargamos los datos de insideairbnb
datos <- datos %>% mutate(legal = ifelse(license =="","Sin licencia","Con licencia"))
# seleccionamos los apartamentos enteros
datos2 <- datos %>% filter(room_type=="Entire home/apt")
# grafico barras licencias/no licencias
ggplot(datos2,aes(neighbourhood,fill=legal)) +
geom_bar() +
labs(title="Distribución de licencias por barrio",
x= "Licence",
y="Neighbourhood") +
geom_text(stat='count',aes(label=..count..),
position = "stack",
vjust=1,
size=3,
color="black") +
theme(axis.text.x=element_text(angle = 90, hjust = 1))
# grafico anterior girando ejes
ggplot(datos2,aes(neighbourhood,fill=legal)) +
geom_bar() +
labs(title="Distribución de licencias por barrio",
x= "Licence",
y="Neighbourhood") +
geom_text(stat='count',aes(label=..count..),
position = "stack",
vjust=1,
hjust=1,
size=3,
color="black") +
coord_flip()
# grafico anterior sobre 100% cada barra
ggplot(datos2,aes(neighbourhood)) +
geom_bar(aes(fill=legal),position="fill") +
labs(title="Distribución de licencias por barrio",
x= "Licence",
y="Neighbourhood") +
coord_flip()
# identifica numero de 5 cifras como licencia
library(stringr)
# nos quedmos con apartamentos enteros
datos2 <- datos %>% filter(room_type=="Entire home/apt")
datos2 <- datos2 %>% mutate(legal_note1 = ifelse(is.na(str_extract(notes,"[:punctuation:]?[:blank:]?\\d{3,5}")),"","Con licencia"))
datos2 <- datos2 %>% mutate(legal_note2 = ifelse(is.na(str_extract(name,"[:punctuation:]?[:blank:]?\\d{3,5}")),"","Con licencia"))
datos2 <- datos2 %>% mutate(legal_note3 = ifelse(is.na(str_extract(summary,"[:punctuation:]?[:blank:]?\\d{3,5}")),"","Con licencia"))
datos2 <- datos2 %>% mutate(legal_note4 = ifelse(is.na(str_extract(description,"[:punctuation:]?[:blank:]?\\d{3,5}")),"","Con licencia"))
datos2 <- datos2 %>% mutate(legal_note5 = ifelse(is.na(str_extract(space,"[:punctuation:]?[:blank:]?\\d{3,5}")),"","Con licencia"))
datos2 <- datos2 %>% mutate(legal_note = ifelse(legal=="Con licencia" | legal_note1=="Con licencia" | legal_note2=="Con licencia" | legal_note3=="Con licencia" | legal_note4=="Con licencia" | legal_note5=="Con licencia",
"Con licencia", "Sin licencia"))
datos2 %>% group_by(legal) %>% count()
datos2 %>% group_by(legal_note) %>% count()
write.csv(datos2,"datos_licencias.csv")
# grafico anterior girando ejes
ggplot(datos2,aes(neighbourhood,fill=legal_note)) +
geom_bar() +
labs(title="Distribución de licencias revisadas por barrio",
x= "Licencias revisadas",
y="Neighbourhood") +
geom_text(stat='count',aes(label=..count..),
position = "stack",
vjust=1,
hjust=1,
size=3,
color="black") +
coord_flip()
# grafico anterior sobre 100% cada barra
ggplot(datos2,aes(neighbourhood)) +
geom_bar(aes(fill=legal_note),position="fill") +
labs(title="Distribución de licencias revisadas por barrio",
x= "Licence revisadas",
y="Neighbourhood") +
coord_flip()
# nos quedmos con apartamentos enteros y numero de reviews cero y tasa de respuesta del host 0 (indicadores de apartamento inactivo)
datos3 <- datos2 %>% filter(number_of_reviews!=0 & host_response_rate!=0)
datos3 <- datos3 %>% mutate(legal_note1 = ifelse(is.na(str_extract(notes,"[:punctuation:]?[:blank:]?\\d{3,5}")),"","Con licencia"))
datos3 <- datos3 %>% mutate(legal_note2 = ifelse(is.na(str_extract(name,"[:punctuation:]?[:blank:]?\\d{3,5}")),"","Con licencia"))
datos3 <- datos3 %>% mutate(legal_note3 = ifelse(is.na(str_extract(summary,"[:punctuation:]?[:blank:]?\\d{3,5}")),"","Con licencia"))
datos3 <- datos3 %>% mutate(legal_note4 = ifelse(is.na(str_extract(description,"[:punctuation:]?[:blank:]?\\d{3,5}")),"","Con licencia"))
datos3 <- datos3 %>% mutate(legal_note5 = ifelse(is.na(str_extract(space,"[:punctuation:]?[:blank:]?\\d{3,5}")),"","Con licencia"))
datos3 <- datos3 %>% mutate(legal_note = ifelse(legal=="Con licencia" | legal_note1=="Con licencia" | legal_note2=="Con licencia" | legal_note3=="Con licencia" | legal_note4=="Con licencia" | legal_note5=="Con licencia",
"Con licencia", "Sin licencia"))
datos3 %>% group_by(legal_note) %>% count()
write.csv(datos3,"datos_licencias_activos.csv")
# grafico anterior girando ejes
ggplot(datos3,aes(neighbourhood,fill=legal_note)) +
geom_bar() +
labs(title="Distribución de licencias activos revisadas por barrio",
x= "Licencias revisadas",
y="Neighbourhood") +
geom_text(stat='count',aes(label=..count..),
position = "stack",
vjust=1,
hjust=1,
size=3,
color="black") +
coord_flip()
# grafico anterior sobre 100% cada barra
ggplot(datos3,aes(neighbourhood)) +
geom_bar(aes(fill=legal_note),position="fill") +
labs(title="Distribución de licencias activos revisadas por barrio",
x= "Licence revisadas",
y="Neighbourhood") +
coord_flip()
#### scrapping de licencias
#- scrapping licencias generalitat: http://comunitatvalenciana.com/viaje/alojamiento/viviendas-turisticas
library("rvest")
library("tidyverse")
content <- read_html("http://comunitatvalenciana.com/viaje/alojamiento/viviendas-turisticas?page=1")
body_table <- content %>% html_nodes('body') %>%
html_nodes('table') %>%
html_table(dec = ",")
my_table <- body_table[[1]]
adress <- "http://comunitatvalenciana.com/viaje/alojamiento/viviendas-turisticas?page="
#- hay 3642 paginas
my_names <-names(my_table)
#- 76 peta x Error in match.names(clabs, names(xi)) : names do not match previous names
n_pags <- 3642
for (ii in 2:n_pags){ #- n_pags
adress_n <- paste0(adress, ii)
content_n <- read_html(adress_n)
body_table_n <- content_n %>% html_nodes('body') %>%
html_nodes('table') %>%
html_table(dec = ",")
my_table_n <- body_table_n[[1]]
names(my_table_n) <- my_names
my_table <- rbind(my_table, my_table_n)
print(ii)
# Esperamos un poco (3 minutos) cada 500 accesos
if(ii%%500 == 0) {
cat(ii, 'esperando...')
Sys.sleep(180)
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment