# Limpiamos el workspace, por si hubiera algun dataset o informacion cargada
rm(list = ls())
# Limpiamos la consola
cat("\014")
# source("loadPackages.R")
packages <- c("ggplot2","ggpubr","readr","plotly","tidyverse","lubridate",
"magrittr","funModeling","skimr", "rgdal", "zoo", "streamgraph")
new <- packages[!(packages %in% installed.packages()[,"Package"])]
if(length(new)) install.packages(new)
a=lapply(packages, require, character.only=TRUE)
Procedemos a cargar el conjunto de datos
seasons_impute <- read.csv('../Work/seasons_impute.csv', sep = ',', header = TRUE)
waspbusters <- read.csv('../Work/WaspBusters_20210504_LARVAE.csv', sep = ',', header = TRUE)
wb_geo <- read.csv('../Work/WBds01_GEO.csv', sep = ',', header = FALSE,
skip =0)
wb_meteo <- read.csv('../Work/WBds02_METEO.csv', sep = ',', header = TRUE)
wb_queen_wasp <- read.csv('../Work/WBds03_all_the_queens_wasps.csv', sep = ',')
estaciones <- read.csv('../data/estaciones.csv', sep = ',')
fruta <- read.csv('../data/fruta.csv', sep = ',')
met <- read.csv('../data/met.csv', sep = ',')
nido <- read.csv('../data/nido.csv', sep = ',')%>%
dplyr::select(1,4,6,7,8,9,0,11,12,13,14,16,19)
loc_estaciones <- read.csv('../Input_open_data/ds05_LOCALIZACION-ESTACIONES-METEOROLOGICAS.csv', sep = ';')
loc_estaciones1 <- loc_estaciones[complete.cases(loc_estaciones),]
loc_estaciones2 <- data.frame(x=loc_estaciones1$YUTM,y=loc_estaciones1$XUTM)
coordinates(loc_estaciones2) <- ~x+y
class(loc_estaciones2)
## [1] "SpatialPoints"
## attr(,"package")
## [1] "sp"
proj4string(loc_estaciones2) <- CRS("+proj=utm +zone=31+datum=WGS84 +units=m +ellps=WGS84")
loc_estaciones3 <- spTransform(loc_estaciones2,CRS("+proj=longlat +datum=WGS84"))
df_loc_est <- as.data.frame(loc_estaciones3)
data_loc_est <- cbind(loc_estaciones,df_loc_est)
data_loc_est$latitude <- data_loc_est$x+4.219
data_loc_est$longitude <- data_loc_est$y-6.62
# Seleccionamos los datos que nos interesas
data_loc_est <- data_loc_est %>%
select(1,2,3,6,9,10)
Visualizamos las ubicaciones de las Estaciones Metereologicas´
library(leaflet)
# Create a color palette with handmade bins.
mybins <- seq(4, 6.5, by=0.5)
mypalette <- colorBin( palette="YlOrBr",
domain=data_loc_est$cota..m.,
na.color="transparent",
bins=mybins)
# Prepare the text for the tooltip:
mytext <- paste(
"Codigo: ", data_loc_est$CODIGO, "<br/>",
"Estacion: ", data_loc_est$ESTACION, "<br/>",
"Tipo: ", data_loc_est$TIPO, "<br/>",
"Cota: ", data_loc_est$cota..m., "<br/>",
"Longitud: ", data_loc_est$longitude, "<br/>",
"Latitud: ", data_loc_est$latitude, "<br/>") %>%
lapply(htmltools::HTML)
# Final Map
leaflet(data_loc_est) %>%
addTiles() %>%
addMarkers(popup = paste0(
"<b>Estación: </b>"
, data_loc_est$ESTACION
, "<br>"
, "<b>Cota: </b>"
, data_loc_est$cota..m.
, "<br>"
, "<b>Tipo: </b>"
, data_loc_est$TIPO
, "<br>"
, data_loc_est$latitude
, data_loc_est$longitude
), clusterOptions = markerClusterOptions())%>%
addProviderTiles(providers$Esri.WorldStreetMap) %>%
addMiniMap(
tiles = providers$Esri.WorldStreetMap,
toggleDisplay = TRUE)
colnames(nido)<-c("id","fecha","usuario", "municipio", "direccion", "especie","altura","diametro","longitude","latitude","estado","agente")
nido$fecha <- as.Date(nido$fecha)
nido$longitude <- gsub(",",".",nido$longitude)
nido$longitude <- as.integer(nido$longitude)
nido$latitude <- gsub(",",".",nido$latitude)
nido$latitude <- as.integer(nido$latitude)
Convertir UTM en
# library(rgdal)
nido <- nido[complete.cases(nido),]
nido1 <- data.frame(x=nido$latitude,y=nido$longitude)
coordinates(nido1) <- ~x+y
class(nido1)
## [1] "SpatialPoints"
## attr(,"package")
## [1] "sp"
proj4string(nido1) <- CRS("+proj=utm +zone=31+datum=WGS84 +units=m +ellps=WGS84")
nido2 <- spTransform(nido1,CRS("+proj=longlat +datum=WGS84"))
Fusionar SpatianPoint a Nido
DF <- as.data.frame(nido2)
data_nido <- cbind(nido,DF)
data_nido$latitude <- data_nido$x+4.219
data_nido$longitude <- data_nido$y-6.62
Obtener Mes y año
data_nido[, "año"] <- as.numeric(format(data_nido[,"fecha"], "%Y"))
data_nido[, "mes"] <- as.numeric(format(data_nido[,"fecha"], "%m"))
mymonths <- c("Jan","Feb","Mar",
"Apr","May","Jun",
"Jul","Aug","Sep",
"Oct","Nov","Dec")
#add abbreviated month name
data_nido <- transform(data_nido, mes = month.abb[mes])
head(data_nido)
Guardamos el fichero
write.csv(data_nido,'data/data_nido.csv', row.names = FALSE)
ggplotly(ggplot(data = data_nido, aes(x = mes, y = id, fill = especie)) +
geom_bar(stat='identity', position='fill') +
facet_wrap(('año')) +
xlab("mes") + ylab("% Cantidad de nidos declarados") +
ggtitle("Especies observadas por mes y año") +
scale_fill_brewer(type='seq', palette='YlOrBr'))
ggplotly(ggplot(data = data_nido, aes(x=municipio, y=especie)) +
geom_bar(stat='identity') +
facet_wrap("año") +
coord_flip() + coord_flip()+
theme(axis.text.x = element_text(angle = 45, hjust = 1, size=7,color="darkred")) +
theme(axis.text.y = element_text(hjust = 1, size=3, color="darkblue")) +
ggtitle("Nidos por municipio y por año") +
labs(x = "MUNICIPIO ", y = "ESPACIE "))
library(ggpmisc)
nidos_fechas <- data_nido%>%
select(fecha,especie)%>%
group_by(fecha,especie)%>%
mutate(num_nidos = n())%>%
arrange(fecha)
nidos_fechas <- nidos_fechas[!duplicated(nidos_fechas), ]
ggplotly(ggplot(data = nidos_fechas, aes(x = fecha, y = num_nidos, color = especie)) +
geom_point() +
geom_smooth(method=lm) +
labs(x = "Fecha", y= "Numero de nidos",colour = "Especie",title = "Tendencia nidos/colmenas por expecie") +
theme_bw())
Vemos ahora la relación entre la altura de los nidos y su diámetro
library(ggvis)
data_nido%>%
ggvis(~altura, ~diametro, fill = ~mes, opacity := 0.3 ) %>%
layer_points() %>%
layer_smooths() %>%
layer_smooths(span = 0.3, stroke := "red") %>%
layer_model_predictions(model = "lm", stroke := "green")
nidos_municipio <- data_nido%>%
select(fecha, municipio)%>%
group_by(month=floor_date(fecha, "month"),municipio) %>%
mutate(num_nidos = n())%>%
arrange(month)
nidos_municipio <- nidos_municipio[!duplicated(nidos_municipio), ]
ggplotly(ggplot(data = nidos_municipio, aes(x = fecha, y = num_nidos, color = municipio)) +
geom_line() +
labs(x = "Fecha", y= "Numero de nidos",colour = "Municipios",title = "Numero de nidos por fecha y población") +
theme_bw())
library(leaflet)
# Create a color palette with handmade bins.
mybins <- seq(4, 6.5, by=0.5)
mypalette <- colorBin( palette="YlOrBr",
domain=data_nido$diametro,
na.color="transparent",
bins=mybins)
# Prepare the text for the tooltip:
mytext <- paste(
"Fecha: ", data_nido$fecha, "<br/>",
"Especie: ", data_nido$especie, "<br/>",
"Altura: ", data_nido$altura, "<br/>",
"Diametro: ", data_nido$diametro, "<br/>",
"Estado: ", data_nido$estado, "<br/>",
"Agente: ", data_nido$agente, "<br/>",
"Municipio: ", data_nido$municipio, sep="") %>%
lapply(htmltools::HTML)
# Final Map
m <- leaflet(data_nido) %>%
addTiles() %>%
setView( lat=43,26271, lng = -2.9334110 , zoom=10) %>%
addProviderTiles("Esri.WorldImagery") %>%
addCircleMarkers(~longitude, ~latitude,
fillColor = ~mypalette(diametro), fillOpacity = 0.7, color="white", radius=8, stroke=FALSE,
label = mytext,
labelOptions = labelOptions( style = list("font-weight" = "normal",
padding = "3px 8px"),
textsize = "13px",
direction = "auto")) %>%
leaflet::addLegend( pal =mypalette, values =~diametro,
opacity=0.9, title = "Diametros",
position = "bottomright" )
m
by_cod <- fruta %>% group_by(CODIGO.MUNICIPIO)%>% distinct()
head(by_cod)
by_cod_list <- fruta %>% group_by(CODIGO.MUNICIPIO)%>% distinct() %>%
summarise(alltypes = paste(PRODUCTODES_C, collapse=", ") )
head(by_cod)
plot(by_cod)
ggplotly(ggplot(by_cod, aes(PRODUCTODES_C, fill=NOMBRE.LOCALIDAD)) +
geom_bar(fill = "#0073C2FF") +
labs(x = "Tipo de Arbol", y= "Numero de municipios",colour = "Municipios",title = "Numero de municipios por tipo de arbol") +
theme_pubclean())
head(seasons_impute)
seasons_impute$month1 <- str_replace_all(
seasons_impute$month, # column we want to search
c("ENE" = "1","FEB" = "2","MAR" = "3","ABR" = "4","MAY" = "5","JUN" = "6",
"JUL" = "7","AGO" = "8","SEP" = "9","OCT" = "10","NOV" = "11","DIC" = "12") # each string schould be matched with a replacement
)
seasons_impute$month1 <- as.numeric(seasons_impute$month1)
seasons_impute$year <- as.numeric(seasons_impute$year)
seasons_impute$fecha2 <- as.yearmon(paste(seasons_impute$year, seasons_impute$month1), "%Y-%m")
seasons_impute$fecha1<-as.Date(with(seasons_impute,paste(year,month1,sep="-")),"%Y-%m")
weather <- transform(seasons_impute, fecha = as.Date(as.yearmon(paste(year, month1, sep = "-"))))
weather <- weather %>%
dplyr::select(47,4,5,8:43)
weather[, "año"] <- as.numeric(format(weather[,"fecha"], "%Y"))
weather[, "mes"] <- as.numeric(format(weather[,"fecha"], "%m"))
Fusionamos los datos de las estaciones metereologicas con la localización
weather_df <- merge(weather, data_loc_est, by.x = "codigo", by.y = "CODIGO")
weather_df <- weather_df %>%
select(2,1,40:46,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38)
head(weather_df)
data3 <- na.aggregate(weather_df)
data1 <- na.omit(data3) # Apply na.omit function
library(dygraphs)
library(xts)
data1[7:27] <- lapply(data1[7:27], as.numeric)
data1$fecha <- as.Date(data1$fecha)
# Then you can create the xts necessary to use dygraph
don <- xts(x = data1[8:27], order.by = data1$fecha)
# Finally the plot
p <- dygraph(don,
main = "Variable Metereologicas por fecha",
ylab = "Valor", xlab = "Fecha") %>%
dyOptions(labelsUTC = TRUE, fillGraph=TRUE, fillAlpha=0.1, drawGrid = FALSE, colors="#D8AE5A") %>%
dyRangeSelector() %>%
dyCrosshair(direction = "vertical") %>%
dyHighlight(highlightCircleSize = 5, highlightSeriesBackgroundAlpha = 0.2, hideOnMouseOut = FALSE) %>%
dyRoller(rollPeriod = 1)
p
Guardamos el fichero
write.csv(weather_df,'data/weather.csv')