Este ejercicio tiene por objetivo caracterizar la flora del cantón Quito usando la Información florística del Proyecto Mapa de Vegetación para la Clasificación de Ecosistemas del Ecuador Continental (MAE, 2018).
Primero instalamos (install.packages) y cargamos (library) la libreria pacman, nos facilitara instalar y cargar varias librerias automaticamente
#para instalar con rapidez multiples librerias, instalo primero "pacman"
#install.packages("pacman")
library(pacman)
#ahora solo debo usar la funcion p_load para instalar y cargar las demás que usare en este ejercicio
p_load(ggplot2,rgbif,rgdal,leaflet,raster,rgeos,ggplot2,tidyr,reshape2)
Primero determino mi área de estudio usando el shapefile de la division politica administrativa que me interesa
#identifico el shapefile que es el mapa de las unidades territoriales cantonales
cantones <- "/cloud/project/data/nxcantones.shp"
#y abro como una dato tipo poligonos espaciales (SpatialPolygonsDataFrame)
cantones <- shapefile(cantones)
#para revisarlo pongo head, observar que la colummna "DPA_DESPRO" describe los nombres de la provincia, mientras que "DPA_DESCAN" describe los nombres de los cantones
head(cantones)
## DPA_VALOR DPA_ANIO DPA_CANTON DPA_DESCAN DPA_PROVIN DPA_DESPRO
## 0 0 2011 0101 CUENCA 01 AZUAY
## 1 0 2011 0102 GIRON 01 AZUAY
## 2 0 2011 0103 GUALACEO 01 AZUAY
## 3 0 2011 0104 NABON 01 AZUAY
## 4 0 2011 0105 PAUTE 01 AZUAY
## 5 0 2011 0106 PUCARA 01 AZUAY
#puedo listar tambien los nombres unicos de las provincias de cada canton
unique(cantones$DPA_DESPRO)
## [1] "AZUAY" "BOLIVAR"
## [3] "CAÐAR" "CARCHI"
## [5] "COTOPAXI" "CHIMBORAZO"
## [7] "EL ORO" "ESMERALDAS"
## [9] "GUAYAS" "IMBABURA"
## [11] "LOJA" "LOS RIOS"
## [13] "MANABI" "MORONA SANTIAGO"
## [15] "NAPO" "PASTAZA"
## [17] "PICHINCHA" "TUNGURAHUA"
## [19] "ZAMORA CHINCHIPE" "GALAPAGOS"
## [21] "SUCUMBIOS" "ORELLANA"
## [23] "SANTO DOMINGO DE LOS TSACHILAS" "SANTA ELENA"
## [25] "ZONA NO DELIMITADA"
como mi unidad es el canton Quito, primero filtro la provincia de Pichincha para identificarlo
#de cantones extraigo la provincia de Pichincha (debe ser igual a lo que esta en DPA_DESPRO)
area.estudio <- cantones[cantones$DPA_DESPRO=="PICHINCHA",]
#ahora veo los nombres de los cantones, e identifico el mio
area.estudio$DPA_DESCAN
## [1] "QUITO" "CAYAMBE"
## [3] "MEJIA" "PEDRO MONCAYO"
## [5] "RUMIÐAHUI" "SAN MIGUEL DE LOS BANCOS"
## [7] "PEDRO VICENTE MALDONADO" "PUERTO QUITO"
#y lo filtro (ignorar con "#" la siguiente linea si voy a trabajar por provincia)
area.estudio <- cantones[cantones$DPA_DESCAN == "QUITO",]
#para revisar el resultado ejecuto sola la variable area.estudio
area.estudio
## class : SpatialPolygonsDataFrame
## features : 1
## extent : 728383.4, 815604.2, 9934830, 10028272 (xmin, xmax, ymin, ymax)
## crs : +proj=utm +zone=17 +south +datum=WGS84 +units=m +no_defs
## variables : 6
## names : DPA_VALOR, DPA_ANIO, DPA_CANTON, DPA_DESCAN, DPA_PROVIN, DPA_DESPRO
## value : 0, 2011, 1701, QUITO, 17, PICHINCHA
fijarse que el CRS o sistema de coordenadas es el UTM 17s, lo cambiamos a geograficas WGS84 (+init=epsg:4326) para facilitar la creación de mapas
area.estudio <- spTransform(area.estudio,CRS("+init=epsg:4326"))
area.estudio
## class : SpatialPolygonsDataFrame
## features : 1
## extent : -78.94801, -78.1649, -0.5889715, 0.2555374 (xmin, xmax, ymin, ymax)
## crs : +proj=longlat +datum=WGS84 +no_defs
## variables : 6
## names : DPA_VALOR, DPA_ANIO, DPA_CANTON, DPA_DESCAN, DPA_PROVIN, DPA_DESPRO
## value : 0, 2011, 1701, QUITO, 17, PICHINCHA
y lo mapeamos
leaflet(area.estudio) %>%
addTiles() %>%
addPolygons()
para calcular la extensión del area de estudio en km2 y guardar el resultado en la tabla asociada al objeto area.estudio
area.estudio$km2 <- round(area(area.estudio) / 1000000,2)
area.estudio$km2
## [1] 4210.91
para esto usamos una libraria que se llama GBIF. El comando para acceder a la informacion es el occ_data y que require saber el datasetKey (se lo obtiene revisando la pagina que abre el dataset y tomando la ultima extension del link: https://www.gbif.org/dataset/9bbdb0ea-b792-4047-be06-c4285ad47f3f). Hay que asegurarse que tenga georeferenciua con el parámetro hasCoordinate=T y el limit le indico el total de registros que deseeo (pueden ser todos pero debo saber cuantos son).
#mae.gbif <- occ_data(datasetKey="9bbdb0ea-b792-4047-be06-c4285ad47f3f",
# hasCoordinate=T, #para asegurarme la que tiene coordenadas
# limit=19085) #ver total de registros
dado que el anterior comando se demora (debe tener una buena conexión y además de que el servidor no este en hora pico), se lo ha guardado previamente en el disco local como un archivo RDS (formato nativo de R). Aqui lo llamamos para abrirlo:
mae.gbif <- readRDS( "/cloud/project/data/mae_gbif.rds")
posterior a su lectura, podemos explorar sus contenidos de jerarquía superior
class(mae.gbif) #clase gbif_data
## [1] "gbif_data"
names(mae.gbif) #dos elementos en el objeto
## [1] "meta" "data"
revisamos los especificos al metadato, fijarse el número de registros:
names(mae.gbif$meta)
## [1] "offset" "limit" "endOfRecords" "count"
head(mae.gbif$meta)
## $offset
## [1] 18900
##
## $limit
## [1] 185
##
## $endOfRecords
## [1] TRUE
##
## $count
## [1] 19085
dado que el dato esta en el elemento “data” exploro el mismo pero con cuidado ya es una base de datos con muchas columnas:
dim(mae.gbif$data)
## [1] 19085 87
como son 87 columnas, reviso los nombres de las columnas para ver que informacion contiene la base:
names(mae.gbif$data)
## [1] "key"
## [2] "scientificName"
## [3] "decimalLatitude"
## [4] "decimalLongitude"
## [5] "issues"
## [6] "datasetKey"
## [7] "publishingOrgKey"
## [8] "installationKey"
## [9] "publishingCountry"
## [10] "protocol"
## [11] "lastCrawled"
## [12] "lastParsed"
## [13] "crawlId"
## [14] "projectId"
## [15] "programmeAcronym"
## [16] "hostingOrganizationKey"
## [17] "basisOfRecord"
## [18] "occurrenceStatus"
## [19] "taxonKey"
## [20] "kingdomKey"
## [21] "phylumKey"
## [22] "classKey"
## [23] "orderKey"
## [24] "familyKey"
## [25] "genusKey"
## [26] "speciesKey"
## [27] "acceptedTaxonKey"
## [28] "acceptedScientificName"
## [29] "kingdom"
## [30] "phylum"
## [31] "order"
## [32] "family"
## [33] "genus"
## [34] "species"
## [35] "genericName"
## [36] "specificEpithet"
## [37] "taxonRank"
## [38] "taxonomicStatus"
## [39] "coordinateUncertaintyInMeters"
## [40] "continent"
## [41] "stateProvince"
## [42] "year"
## [43] "month"
## [44] "day"
## [45] "eventDate"
## [46] "lastInterpreted"
## [47] "references"
## [48] "license"
## [49] "sampleSizeUnit"
## [50] "isInCluster"
## [51] "geodeticDatum"
## [52] "class"
## [53] "countryCode"
## [54] "country"
## [55] "rightsHolder"
## [56] "http://rs.tdwg.org/dwc/terms/sampleSizeValue"
## [57] "eventID"
## [58] "identifier"
## [59] "institutionID"
## [60] "locality"
## [61] "datasetName"
## [62] "eventRemarks"
## [63] "language"
## [64] "gbifID"
## [65] "occurrenceID"
## [66] "type"
## [67] "taxonID"
## [68] "recordedBy"
## [69] "http://rs.tdwg.org/dwc/terms/sampleSizeUnit"
## [70] "ownerInstitutionCode"
## [71] "startDayOfYear"
## [72] "samplingProtocol"
## [73] "accessRights"
## [74] "bibliographicCitation"
## [75] "verbatimElevation"
## [76] "establishmentMeans"
## [77] "iucnRedListCategory"
## [78] "otherCatalogNumbers"
## [79] "recordNumber"
## [80] "identificationQualifier"
## [81] "name"
## [82] "identificationRemarks"
## [83] "organismQuantity"
## [84] "organismQuantityType"
## [85] "http://rs.tdwg.org/dwc/terms/organismQuantity"
## [86] "http://rs.tdwg.org/dwc/terms/organismQuantityType"
## [87] "infraspecificEpithet"
dado que no todos estos parametros son relevantes, reviso aquellos de interes pero antes, extraigo la base en una nueva variable llamada mae.data y listo con head los primeros registros para ver que columnas me interesan
mae.data <- as.data.frame(mae.gbif$data)
head(mae.data)
## key scientificName decimalLatitude
## 1 1978529342 Bougainvillea peruviana Humb. & Bonpl. -3.993685
## 2 1978529345 Albizia multiflora (Kunth) Barneby & J.W.Grimes -3.993685
## 3 1978529353 Tabebuia billbergii (Bureau & K.Schum.) Standl. -3.993685
## 4 1978529364 Cactus Linn. ex Kuntze, 1891 -3.993685
## 5 1978529370 Piscidia carthagenensis Jacq. -3.993685
## 6 1978529371 Acacia macracantha Humb. & Bonpl. ex Willd. -3.993685
## decimalLongitude issues datasetKey
## 1 -80.39542 9bbdb0ea-b792-4047-be06-c4285ad47f3f
## 2 -80.39542 9bbdb0ea-b792-4047-be06-c4285ad47f3f
## 3 -80.39542 9bbdb0ea-b792-4047-be06-c4285ad47f3f
## 4 -80.39542 9bbdb0ea-b792-4047-be06-c4285ad47f3f
## 5 -80.39542 9bbdb0ea-b792-4047-be06-c4285ad47f3f
## 6 -80.39542 9bbdb0ea-b792-4047-be06-c4285ad47f3f
## publishingOrgKey installationKey
## 1 c54097e6-0972-4acb-b849-eaeba29c917d 9df8109c-684d-416b-819b-7bc09adc500b
## 2 c54097e6-0972-4acb-b849-eaeba29c917d 9df8109c-684d-416b-819b-7bc09adc500b
## 3 c54097e6-0972-4acb-b849-eaeba29c917d 9df8109c-684d-416b-819b-7bc09adc500b
## 4 c54097e6-0972-4acb-b849-eaeba29c917d 9df8109c-684d-416b-819b-7bc09adc500b
## 5 c54097e6-0972-4acb-b849-eaeba29c917d 9df8109c-684d-416b-819b-7bc09adc500b
## 6 c54097e6-0972-4acb-b849-eaeba29c917d 9df8109c-684d-416b-819b-7bc09adc500b
## publishingCountry protocol lastCrawled
## 1 EC DWC_ARCHIVE 2021-09-11T09:57:56.121+00:00
## 2 EC DWC_ARCHIVE 2021-09-11T09:57:56.121+00:00
## 3 EC DWC_ARCHIVE 2021-09-11T09:57:56.121+00:00
## 4 EC DWC_ARCHIVE 2021-09-11T09:57:56.121+00:00
## 5 EC DWC_ARCHIVE 2021-09-11T09:57:56.121+00:00
## 6 EC DWC_ARCHIVE 2021-09-11T09:57:56.121+00:00
## lastParsed crawlId projectId programmeAcronym
## 1 2021-09-23T22:04:25.488+00:00 37 CESP2017-0007 CESP
## 2 2021-09-23T22:04:25.529+00:00 37 CESP2017-0007 CESP
## 3 2021-09-23T22:04:25.527+00:00 37 CESP2017-0007 CESP
## 4 2021-09-23T22:04:25.531+00:00 37 CESP2017-0007 CESP
## 5 2021-09-23T22:04:25.503+00:00 37 CESP2017-0007 CESP
## 6 2021-09-23T22:04:25.503+00:00 37 CESP2017-0007 CESP
## hostingOrganizationKey basisOfRecord occurrenceStatus
## 1 c54097e6-0972-4acb-b849-eaeba29c917d HUMAN_OBSERVATION PRESENT
## 2 c54097e6-0972-4acb-b849-eaeba29c917d HUMAN_OBSERVATION PRESENT
## 3 c54097e6-0972-4acb-b849-eaeba29c917d HUMAN_OBSERVATION PRESENT
## 4 c54097e6-0972-4acb-b849-eaeba29c917d HUMAN_OBSERVATION PRESENT
## 5 c54097e6-0972-4acb-b849-eaeba29c917d HUMAN_OBSERVATION PRESENT
## 6 c54097e6-0972-4acb-b849-eaeba29c917d HUMAN_OBSERVATION PRESENT
## taxonKey kingdomKey phylumKey classKey orderKey familyKey genusKey speciesKey
## 1 8019463 6 7707728 220 422 6718 3086089 8019463
## 2 2972967 6 7707728 220 1370 5386 2972897 2972967
## 3 7298280 6 7707728 220 408 6655 6401269 7298500
## 4 7833615 6 7707728 220 422 2519 7833615 NA
## 5 2956078 6 7707728 220 1370 5386 2956053 2956078
## 6 2980413 6 7707728 220 1370 5386 8142432 3795445
## acceptedTaxonKey
## 1 8019463
## 2 2972967
## 3 7298501
## 4 7833615
## 5 2956078
## 6 3795445
## acceptedScientificName kingdom
## 1 Bougainvillea peruviana Humb. & Bonpl. Plantae
## 2 Albizia multiflora (Kunth) Barneby & J.W.Grimes Plantae
## 3 Handroanthus billbergii subsp. billbergii Plantae
## 4 Cactus Linn. ex Kuntze, 1891 Plantae
## 5 Piscidia carthagenensis Jacq. Plantae
## 6 Vachellia macracantha (Humb. & Bonpl. ex Willd.) Seigler & Ebinger Plantae
## phylum order family genus
## 1 Tracheophyta Caryophyllales Nyctaginaceae Bougainvillea
## 2 Tracheophyta Fabales Fabaceae Albizia
## 3 Tracheophyta Lamiales Bignoniaceae Handroanthus
## 4 Tracheophyta Caryophyllales Cactaceae Cactus
## 5 Tracheophyta Fabales Fabaceae Piscidia
## 6 Tracheophyta Fabales Fabaceae Vachellia
## species genericName specificEpithet taxonRank
## 1 Bougainvillea peruviana Bougainvillea peruviana SPECIES
## 2 Albizia multiflora Albizia multiflora SPECIES
## 3 Handroanthus billbergii Tabebuia billbergii SPECIES
## 4 <NA> Cactus <NA> GENUS
## 5 Piscidia carthagenensis Piscidia carthagenensis SPECIES
## 6 Vachellia macracantha Acacia macracantha SPECIES
## taxonomicStatus coordinateUncertaintyInMeters continent stateProvince
## 1 ACCEPTED 30 SOUTH_AMERICA Loja
## 2 ACCEPTED 30 SOUTH_AMERICA Loja
## 3 SYNONYM 30 SOUTH_AMERICA Loja
## 4 ACCEPTED 30 SOUTH_AMERICA Loja
## 5 ACCEPTED 30 SOUTH_AMERICA Loja
## 6 SYNONYM 30 SOUTH_AMERICA Loja
## year month day eventDate lastInterpreted
## 1 2012 1 16 2012-01-16T00:00:00 2021-09-23T22:04:25.488+00:00
## 2 2012 1 16 2012-01-16T00:00:00 2021-09-23T22:04:25.529+00:00
## 3 2012 1 16 2012-01-16T00:00:00 2021-09-23T22:04:25.527+00:00
## 4 2012 1 16 2012-01-16T00:00:00 2021-09-23T22:04:25.531+00:00
## 5 2012 1 16 2012-01-16T00:00:00 2021-09-23T22:04:25.503+00:00
## 6 2012 1 16 2012-01-16T00:00:00 2021-09-23T22:04:25.503+00:00
## references
## 1 http://suia.ambiente.gob.ec/documents/10179/1149768/sistemaClasificacion-EcosistemasEcuador.pdf/68febece-a5ef-49a7-9d8a-07c99fa404ef
## 2 http://suia.ambiente.gob.ec/documents/10179/1149768/sistemaClasificacion-EcosistemasEcuador.pdf/68febece-a5ef-49a7-9d8a-07c99fa404ef
## 3 http://suia.ambiente.gob.ec/documents/10179/1149768/sistemaClasificacion-EcosistemasEcuador.pdf/68febece-a5ef-49a7-9d8a-07c99fa404ef
## 4 http://suia.ambiente.gob.ec/documents/10179/1149768/sistemaClasificacion-EcosistemasEcuador.pdf/68febece-a5ef-49a7-9d8a-07c99fa404ef
## 5 http://suia.ambiente.gob.ec/documents/10179/1149768/sistemaClasificacion-EcosistemasEcuador.pdf/68febece-a5ef-49a7-9d8a-07c99fa404ef
## 6 http://suia.ambiente.gob.ec/documents/10179/1149768/sistemaClasificacion-EcosistemasEcuador.pdf/68febece-a5ef-49a7-9d8a-07c99fa404ef
## license sampleSizeUnit
## 1 http://creativecommons.org/licenses/by/4.0/legalcode metro
## 2 http://creativecommons.org/licenses/by/4.0/legalcode metro
## 3 http://creativecommons.org/licenses/by/4.0/legalcode metro
## 4 http://creativecommons.org/licenses/by/4.0/legalcode metro
## 5 http://creativecommons.org/licenses/by/4.0/legalcode metro
## 6 http://creativecommons.org/licenses/by/4.0/legalcode metro
## isInCluster geodeticDatum class countryCode country
## 1 FALSE WGS84 Magnoliopsida EC Ecuador
## 2 FALSE WGS84 Magnoliopsida EC Ecuador
## 3 FALSE WGS84 Magnoliopsida EC Ecuador
## 4 FALSE WGS84 Magnoliopsida EC Ecuador
## 5 FALSE WGS84 Magnoliopsida EC Ecuador
## 6 FALSE WGS84 Magnoliopsida EC Ecuador
## rightsHolder
## 1 Ministerio del Ambiente de Ecuador, Subsecretaría de Patrimonio Natural
## 2 Ministerio del Ambiente de Ecuador, Subsecretaría de Patrimonio Natural
## 3 Ministerio del Ambiente de Ecuador, Subsecretaría de Patrimonio Natural
## 4 Ministerio del Ambiente de Ecuador, Subsecretaría de Patrimonio Natural
## 5 Ministerio del Ambiente de Ecuador, Subsecretaría de Patrimonio Natural
## 6 Ministerio del Ambiente de Ecuador, Subsecretaría de Patrimonio Natural
## http://rs.tdwg.org/dwc/terms/sampleSizeValue eventID identifier
## 1 30 x 30 JS031023 JS031023
## 2 30 x 30 JS031023 JS031023
## 3 30 x 30 JS031023 JS031023
## 4 30 x 30 JS031023 JS031023
## 5 30 x 30 JS031023 JS031023
## 6 30 x 30 JS031023 JS031023
## institutionID locality
## 1 http://www.ambiente.gob.ec/ Reserva Cazaderos
## 2 http://www.ambiente.gob.ec/ Reserva Cazaderos
## 3 http://www.ambiente.gob.ec/ Reserva Cazaderos
## 4 http://www.ambiente.gob.ec/ Reserva Cazaderos
## 5 http://www.ambiente.gob.ec/ Reserva Cazaderos
## 6 http://www.ambiente.gob.ec/ Reserva Cazaderos
## datasetName
## 1 Información florística del Proyecto Mapa de Vegetación para la Clasificación de Ecosistemas del Ecuador Continental
## 2 Información florística del Proyecto Mapa de Vegetación para la Clasificación de Ecosistemas del Ecuador Continental
## 3 Información florística del Proyecto Mapa de Vegetación para la Clasificación de Ecosistemas del Ecuador Continental
## 4 Información florística del Proyecto Mapa de Vegetación para la Clasificación de Ecosistemas del Ecuador Continental
## 5 Información florística del Proyecto Mapa de Vegetación para la Clasificación de Ecosistemas del Ecuador Continental
## 6 Información florística del Proyecto Mapa de Vegetación para la Clasificación de Ecosistemas del Ecuador Continental
## eventRemarks
## 1 Altura de dosel > 10m; Cobertura Semicerrada (50 - 75%); Fenología Deciduo; Relieve general: De Montana; Macrorelieve: Valle Tectonico; Mesorelieve: Colinas Altas
## 2 Altura de dosel > 10m; Cobertura Semicerrada (50 - 75%); Fenología Deciduo; Relieve general: De Montana; Macrorelieve: Valle Tectonico; Mesorelieve: Colinas Altas
## 3 Altura de dosel > 10m; Cobertura Semicerrada (50 - 75%); Fenología Deciduo; Relieve general: De Montana; Macrorelieve: Valle Tectonico; Mesorelieve: Colinas Altas
## 4 Altura de dosel > 10m; Cobertura Semicerrada (50 - 75%); Fenología Deciduo; Relieve general: De Montana; Macrorelieve: Valle Tectonico; Mesorelieve: Colinas Altas
## 5 Altura de dosel > 10m; Cobertura Semicerrada (50 - 75%); Fenología Deciduo; Relieve general: De Montana; Macrorelieve: Valle Tectonico; Mesorelieve: Colinas Altas
## 6 Altura de dosel > 10m; Cobertura Semicerrada (50 - 75%); Fenología Deciduo; Relieve general: De Montana; Macrorelieve: Valle Tectonico; Mesorelieve: Colinas Altas
## language gbifID occurrenceID type taxonID
## 1 ES 1978529342 JS031023-9666 Event ec.bio.pla.15380
## 2 ES 1978529345 JS031023-9665 Event ec.bio.pla.17916
## 3 ES 1978529353 JS031023-9672 Event ec.bio.pla.22214
## 4 ES 1978529364 JS031023-9667 Event ec.bio.pla.1560
## 5 ES 1978529370 JS031023-9671 Event ec.bio.pla.18881
## 6 ES 1978529371 JS031023-9664 Event ec.bio.pla.17869
## recordedBy
## 1 Janeth Santiana|Carlos Morales|Gonzalo Rivas|Silvia Salgado|Cristhian Aguirre|David Neill
## 2 Janeth Santiana|Carlos Morales|Gonzalo Rivas|Silvia Salgado|Cristhian Aguirre|David Neill
## 3 Janeth Santiana|Carlos Morales|Gonzalo Rivas|Silvia Salgado|Cristhian Aguirre|David Neill
## 4 Janeth Santiana|Carlos Morales|Gonzalo Rivas|Silvia Salgado|Cristhian Aguirre|David Neill
## 5 Janeth Santiana|Carlos Morales|Gonzalo Rivas|Silvia Salgado|Cristhian Aguirre|David Neill
## 6 Janeth Santiana|Carlos Morales|Gonzalo Rivas|Silvia Salgado|Cristhian Aguirre|David Neill
## http://rs.tdwg.org/dwc/terms/sampleSizeUnit ownerInstitutionCode
## 1 metro MAE
## 2 metro MAE
## 3 metro MAE
## 4 metro MAE
## 5 metro MAE
## 6 metro MAE
## startDayOfYear samplingProtocol
## 1 15 Parcela permanente
## 2 15 Parcela permanente
## 3 15 Parcela permanente
## 4 15 Parcela permanente
## 5 15 Parcela permanente
## 6 15 Parcela permanente
## accessRights
## 1 uso sin fines de lucro solamente. Siempre hacer referencia a la fuente de la información.
## 2 uso sin fines de lucro solamente. Siempre hacer referencia a la fuente de la información.
## 3 uso sin fines de lucro solamente. Siempre hacer referencia a la fuente de la información.
## 4 uso sin fines de lucro solamente. Siempre hacer referencia a la fuente de la información.
## 5 uso sin fines de lucro solamente. Siempre hacer referencia a la fuente de la información.
## 6 uso sin fines de lucro solamente. Siempre hacer referencia a la fuente de la información.
## bibliographicCitation
## 1 MAE; Acosta-Buenaño, N.; Beltrán, L.; Chinchero, M. A.; Galeas, R.; Guevara, J.; Herrera, X.; Iglesias, J.; Medina-Torres, B.; Morales, C.; Rivas-Tores, G.; Salgado, S.; Santiana, J. 2018. Información florística del Proyecto Mapa de Vegetación para la Clasificación de Ecosistemas del Ecuador Continental. Ministerio del Ambiente del Ecuador. Quito. Ref: (Ministerio del Ambiente del Ecuador. 2013. Sistema de Clasificación de los Ecosistemas del Ecuador Continental. Subsecretaría de Patrimonio Natural. Quito.)
## 2 MAE; Acosta-Buenaño, N.; Beltrán, L.; Chinchero, M. A.; Galeas, R.; Guevara, J.; Herrera, X.; Iglesias, J.; Medina-Torres, B.; Morales, C.; Rivas-Tores, G.; Salgado, S.; Santiana, J. 2018. Información florística del Proyecto Mapa de Vegetación para la Clasificación de Ecosistemas del Ecuador Continental. Ministerio del Ambiente del Ecuador. Quito. Ref: (Ministerio del Ambiente del Ecuador. 2013. Sistema de Clasificación de los Ecosistemas del Ecuador Continental. Subsecretaría de Patrimonio Natural. Quito.)
## 3 MAE; Acosta-Buenaño, N.; Beltrán, L.; Chinchero, M. A.; Galeas, R.; Guevara, J.; Herrera, X.; Iglesias, J.; Medina-Torres, B.; Morales, C.; Rivas-Tores, G.; Salgado, S.; Santiana, J. 2018. Información florística del Proyecto Mapa de Vegetación para la Clasificación de Ecosistemas del Ecuador Continental. Ministerio del Ambiente del Ecuador. Quito. Ref: (Ministerio del Ambiente del Ecuador. 2013. Sistema de Clasificación de los Ecosistemas del Ecuador Continental. Subsecretaría de Patrimonio Natural. Quito.)
## 4 MAE; Acosta-Buenaño, N.; Beltrán, L.; Chinchero, M. A.; Galeas, R.; Guevara, J.; Herrera, X.; Iglesias, J.; Medina-Torres, B.; Morales, C.; Rivas-Tores, G.; Salgado, S.; Santiana, J. 2018. Información florística del Proyecto Mapa de Vegetación para la Clasificación de Ecosistemas del Ecuador Continental. Ministerio del Ambiente del Ecuador. Quito. Ref: (Ministerio del Ambiente del Ecuador. 2013. Sistema de Clasificación de los Ecosistemas del Ecuador Continental. Subsecretaría de Patrimonio Natural. Quito.)
## 5 MAE; Acosta-Buenaño, N.; Beltrán, L.; Chinchero, M. A.; Galeas, R.; Guevara, J.; Herrera, X.; Iglesias, J.; Medina-Torres, B.; Morales, C.; Rivas-Tores, G.; Salgado, S.; Santiana, J. 2018. Información florística del Proyecto Mapa de Vegetación para la Clasificación de Ecosistemas del Ecuador Continental. Ministerio del Ambiente del Ecuador. Quito. Ref: (Ministerio del Ambiente del Ecuador. 2013. Sistema de Clasificación de los Ecosistemas del Ecuador Continental. Subsecretaría de Patrimonio Natural. Quito.)
## 6 MAE; Acosta-Buenaño, N.; Beltrán, L.; Chinchero, M. A.; Galeas, R.; Guevara, J.; Herrera, X.; Iglesias, J.; Medina-Torres, B.; Morales, C.; Rivas-Tores, G.; Salgado, S.; Santiana, J. 2018. Información florística del Proyecto Mapa de Vegetación para la Clasificación de Ecosistemas del Ecuador Continental. Ministerio del Ambiente del Ecuador. Quito. Ref: (Ministerio del Ambiente del Ecuador. 2013. Sistema de Clasificación de los Ecosistemas del Ecuador Continental. Subsecretaría de Patrimonio Natural. Quito.)
## verbatimElevation establishmentMeans iucnRedListCategory otherCatalogNumbers
## 1 160 <NA> <NA> <NA>
## 2 160 NATIVE <NA> <NA>
## 3 160 <NA> <NA> <NA>
## 4 160 <NA> <NA> <NA>
## 5 160 NATIVE <NA> <NA>
## 6 160 NATIVE <NA> <NA>
## recordNumber identificationQualifier
## 1 <NA> <NA>
## 2 <NA> <NA>
## 3 <NA> <NA>
## 4 <NA> <NA>
## 5 <NA> <NA>
## 6 <NA> <NA>
## name identificationRemarks
## 1 Bougainvillea peruviana Humb. & Bonpl. <NA>
## 2 Albizia multiflora (Kunth) Barneby & J.W.Grimes <NA>
## 3 Tabebuia billbergii (Bureau & K.Schum.) Standl. <NA>
## 4 Cactus Linn. ex Kuntze, 1891 <NA>
## 5 Piscidia carthagenensis Jacq. <NA>
## 6 Acacia macracantha Humb. & Bonpl. ex Willd. <NA>
## organismQuantity organismQuantityType
## 1 NA <NA>
## 2 NA <NA>
## 3 NA <NA>
## 4 NA <NA>
## 5 NA <NA>
## 6 NA <NA>
## http://rs.tdwg.org/dwc/terms/organismQuantity
## 1 <NA>
## 2 <NA>
## 3 <NA>
## 4 <NA>
## 5 <NA>
## 6 <NA>
## http://rs.tdwg.org/dwc/terms/organismQuantityType infraspecificEpithet
## 1 <NA> <NA>
## 2 <NA> <NA>
## 3 <NA> <NA>
## 4 <NA> <NA>
## 5 <NA> <NA>
## 6 <NA> <NA>
ahora extraigo las columnas mas relevantes para reducir la base a lo que me interesa:
#primero defino los nombres de las columnas que me interesan
cols.interes <- c("decimalLatitude","decimalLongitude","coordinateUncertaintyInMeters","locality","stateProvince","eventDate","eventRemarks","verbatimElevation",
"basisOfRecord","scientificName","acceptedScientificName","kingdom",
"phylum","order","family","genus","species","genericName","specificEpithet")
#y despues las filtro de la base
mae.data <- mae.data[ ,cols.interes]
#reviso el resultado, fijarse que eventRemarks incluye mas de un dato interesante
head(mae.data)
## decimalLatitude decimalLongitude coordinateUncertaintyInMeters
## 1 -3.993685 -80.39542 30
## 2 -3.993685 -80.39542 30
## 3 -3.993685 -80.39542 30
## 4 -3.993685 -80.39542 30
## 5 -3.993685 -80.39542 30
## 6 -3.993685 -80.39542 30
## locality stateProvince eventDate
## 1 Reserva Cazaderos Loja 2012-01-16T00:00:00
## 2 Reserva Cazaderos Loja 2012-01-16T00:00:00
## 3 Reserva Cazaderos Loja 2012-01-16T00:00:00
## 4 Reserva Cazaderos Loja 2012-01-16T00:00:00
## 5 Reserva Cazaderos Loja 2012-01-16T00:00:00
## 6 Reserva Cazaderos Loja 2012-01-16T00:00:00
## eventRemarks
## 1 Altura de dosel > 10m; Cobertura Semicerrada (50 - 75%); Fenología Deciduo; Relieve general: De Montana; Macrorelieve: Valle Tectonico; Mesorelieve: Colinas Altas
## 2 Altura de dosel > 10m; Cobertura Semicerrada (50 - 75%); Fenología Deciduo; Relieve general: De Montana; Macrorelieve: Valle Tectonico; Mesorelieve: Colinas Altas
## 3 Altura de dosel > 10m; Cobertura Semicerrada (50 - 75%); Fenología Deciduo; Relieve general: De Montana; Macrorelieve: Valle Tectonico; Mesorelieve: Colinas Altas
## 4 Altura de dosel > 10m; Cobertura Semicerrada (50 - 75%); Fenología Deciduo; Relieve general: De Montana; Macrorelieve: Valle Tectonico; Mesorelieve: Colinas Altas
## 5 Altura de dosel > 10m; Cobertura Semicerrada (50 - 75%); Fenología Deciduo; Relieve general: De Montana; Macrorelieve: Valle Tectonico; Mesorelieve: Colinas Altas
## 6 Altura de dosel > 10m; Cobertura Semicerrada (50 - 75%); Fenología Deciduo; Relieve general: De Montana; Macrorelieve: Valle Tectonico; Mesorelieve: Colinas Altas
## verbatimElevation basisOfRecord
## 1 160 HUMAN_OBSERVATION
## 2 160 HUMAN_OBSERVATION
## 3 160 HUMAN_OBSERVATION
## 4 160 HUMAN_OBSERVATION
## 5 160 HUMAN_OBSERVATION
## 6 160 HUMAN_OBSERVATION
## scientificName
## 1 Bougainvillea peruviana Humb. & Bonpl.
## 2 Albizia multiflora (Kunth) Barneby & J.W.Grimes
## 3 Tabebuia billbergii (Bureau & K.Schum.) Standl.
## 4 Cactus Linn. ex Kuntze, 1891
## 5 Piscidia carthagenensis Jacq.
## 6 Acacia macracantha Humb. & Bonpl. ex Willd.
## acceptedScientificName kingdom
## 1 Bougainvillea peruviana Humb. & Bonpl. Plantae
## 2 Albizia multiflora (Kunth) Barneby & J.W.Grimes Plantae
## 3 Handroanthus billbergii subsp. billbergii Plantae
## 4 Cactus Linn. ex Kuntze, 1891 Plantae
## 5 Piscidia carthagenensis Jacq. Plantae
## 6 Vachellia macracantha (Humb. & Bonpl. ex Willd.) Seigler & Ebinger Plantae
## phylum order family genus
## 1 Tracheophyta Caryophyllales Nyctaginaceae Bougainvillea
## 2 Tracheophyta Fabales Fabaceae Albizia
## 3 Tracheophyta Lamiales Bignoniaceae Handroanthus
## 4 Tracheophyta Caryophyllales Cactaceae Cactus
## 5 Tracheophyta Fabales Fabaceae Piscidia
## 6 Tracheophyta Fabales Fabaceae Vachellia
## species genericName specificEpithet
## 1 Bougainvillea peruviana Bougainvillea peruviana
## 2 Albizia multiflora Albizia multiflora
## 3 Handroanthus billbergii Tabebuia billbergii
## 4 <NA> Cactus <NA>
## 5 Piscidia carthagenensis Piscidia carthagenensis
## 6 Vachellia macracantha Acacia macracantha
para separar esto en multiples columnas, primero identifico el separador del dato (;) y el número de parametros existentes para después usar la función separate. El warning es porque algunos registros no tenian todos los datos completos. Los ignoramos por ahora
mae.data$eventRemarks[1]
## [1] "Altura de dosel > 10m; Cobertura Semicerrada (50 - 75%); Fenología Deciduo; Relieve general: De Montana; Macrorelieve: Valle Tectonico; Mesorelieve: Colinas Altas"
mae.data <- separate(mae.data,col="eventRemarks",sep=";",into=c("doselAltura","cobertura","fenologia","relieve","macrorelieve","mesorelieve"))
## Warning: Expected 6 pieces. Missing pieces filled with `NA` in 1923 rows [71,
## 72, 73, 74, 80, 82, 83, 4872, 4876, 4880, 4881, 4888, 4889, 4891, 4892, 4893,
## 4894, 4895, 4896, 4897, ...].
ahora que he simplicado la base, voy a recortarla con mi area de estudio. Hay dos formas, una es simplemente filtrando el campo “StateProvince” con la provincia que me interesa pero como estoy trabajando con el canton Quito, lo hare usando el poligono de mi area de estudio. Esto ultimo es recomendable considerando que mi area de estudio podria ser cualquier otra. Para esto primero transformo la base mae.data en un objeto de puntos espaciales con el comando SpatialPointsDataFrame al que primero debo indicarle en el parametro coords, es decir las coordenadas latitud y longitud de las parcelas, el sistema de coordenadas (debe ser el CRS de geograficas que aplicamos antes), y en data la base que estamos trabajando
mae.pts <- SpatialPointsDataFrame(coords=mae.data[,c("decimalLongitude","decimalLatitude")],
data=mae.data,
proj4string=CRS("+init=epsg:4326"))
mae.pts
## class : SpatialPointsDataFrame
## features : 19085
## extent : -80.89334, -75.41388, -4.970353, 1.339637 (xmin, xmax, ymin, ymax)
## crs : +proj=longlat +datum=WGS84 +no_defs
## variables : 24
## names : decimalLatitude, decimalLongitude, coordinateUncertaintyInMeters, locality, stateProvince, eventDate, doselAltura, cobertura, fenologia, relieve, macrorelieve, mesorelieve, verbatimElevation, basisOfRecord, scientificName, ...
## min values : -4.970353, -80.893336, 30, 0, Azuay, 2001-02-14T00:00:00, Altura de dosel < 2 m, Cobertura Abierta (<25%), Fenología Deciduo, Macrorelieve: Cordillera, Macrorelieve: Cordillera, Mesorelieve: Abanico Aluvial, 1000, HUMAN_OBSERVATION, Abarema barbouriana (Standl.) Barneby & J.W.Grimes, ...
## max values : 1.339637, -75.413879, 30, Zuniag Sangay, Zamora Chinchipe, 2021-09-16T10:04:16, Fenología Siempreverde, Relieve general: De Montana, Relieve general: Oriente, Relieve general: Oriente, Mesorelieve: Vertientes Disectadas, Mesorelieve: Vertientes Disectadas, 985.94, PRESERVED_SPECIMEN, Zygia P.Browne, ...
posterior a esto, procedo a cortarlo con mi area de estudio mediante la funcion intersect. Uso aqui raster::intersect porque esa funcion esta en otros paquetes que no son el raster y para evitar que el r se confunda le digo de esta forma que use la funcion de ese paquete en especifico
mae.pts <- raster::intersect(mae.pts,area.estudio)
mae.pts
## class : SpatialPointsDataFrame
## features : 65
## extent : -78.45204, -78.22971, -0.307866, 0.077063 (xmin, xmax, ymin, ymax)
## crs : +proj=longlat +datum=WGS84 +no_defs
## variables : 31
## names : decimalLatitude, decimalLongitude, coordinateUncertaintyInMeters, locality, stateProvince, eventDate, doselAltura, cobertura, fenologia, relieve, macrorelieve, mesorelieve, verbatimElevation, basisOfRecord, scientificName, ...
## min values : -0.307866, -78.452041, 30, San Antonio de Tanlahua, Pichincha, 2011-02-14T00:00:00, Altura de dosel < 2 m, Cobertura Cerrada (>75%), Fenología Siempreverde, Macrorelieve: Piedemonte, Macrorelieve: Cordillera, Mesorelieve: Colinas Altas, 2811.9, HUMAN_OBSERVATION, Abutilon ibarrense Kunth, ...
## max values : 0.077063, -78.229709, 30, Via Tanlahua Perucho, Pichincha, 2012-06-13T00:00:00, Altura de dosel 5m - 10m, Cobertura Semicerrada (50 - 75%), Relieve general: De Montana, Relieve general: De Montana, Mesorelieve: Glacis, Mesorelieve: Llanuras de ablacion, 552.2, PRESERVED_SPECIMEN, Vernonia Schreb., ...
ahora lo mapeo para ver en donde suceden en mi area de estudio
parcelas.map <- leaflet() %>%
addTiles() %>%
addPolygons(data=area.estudio,fill=F) %>%
addCircleMarkers(data=mae.pts,radius = 3,color="red")
parcelas.map
con esto ya puedo tener una idea si este dataset es representativo para mi caracterización.
A continuación procedo a explorar los parametros de los puntos que conforman estas parcelas para entenderlas mejor. Recordar que el objeto mae.pts son puntos espaciales y que para acceder a su base de datos se necesita poner @data para acceder a estos Listo los primeros elementos para recordar la informacion que existe en el objeto:
head(mae.pts)
## decimalLatitude decimalLongitude coordinateUncertaintyInMeters
## 4866 0.053644 -78.45204 30
## 4867 0.053644 -78.45204 30
## 4868 0.053644 -78.45204 30
## 4869 0.053644 -78.45204 30
## 4871 0.053644 -78.45204 30
## 4872 0.077063 -78.43799 30
## locality stateProvince eventDate
## 4866 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00
## 4867 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00
## 4868 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00
## 4869 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00
## 4871 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00
## 4872 Via Tanlahua Perucho Pichincha 2012-06-13T00:00:00
## doselAltura cobertura
## 4866 Altura de dosel 2m - 5m Cobertura Cerrada (>75%)
## 4867 Altura de dosel 2m - 5m Cobertura Cerrada (>75%)
## 4868 Altura de dosel 2m - 5m Cobertura Cerrada (>75%)
## 4869 Altura de dosel 2m - 5m Cobertura Cerrada (>75%)
## 4871 Altura de dosel 2m - 5m Cobertura Cerrada (>75%)
## 4872 Altura de dosel 2m - 5m Cobertura Semicerrada (50 - 75%)
## fenologia relieve
## 4866 Fenología Siempreverde Relieve general: De Montana
## 4867 Fenología Siempreverde Relieve general: De Montana
## 4868 Fenología Siempreverde Relieve general: De Montana
## 4869 Fenología Siempreverde Relieve general: De Montana
## 4871 Fenología Siempreverde Relieve general: De Montana
## 4872 Relieve general: De Montana Macrorelieve: Piedemonte
## macrorelieve mesorelieve
## 4866 Macrorelieve: Cordillera Mesorelieve: Edificios Volcanicos
## 4867 Macrorelieve: Cordillera Mesorelieve: Edificios Volcanicos
## 4868 Macrorelieve: Cordillera Mesorelieve: Edificios Volcanicos
## 4869 Macrorelieve: Cordillera Mesorelieve: Edificios Volcanicos
## 4871 Macrorelieve: Cordillera Mesorelieve: Edificios Volcanicos
## 4872 Mesorelieve: Glacis <NA>
## verbatimElevation basisOfRecord
## 4866 552.2 HUMAN_OBSERVATION
## 4867 552.2 HUMAN_OBSERVATION
## 4868 552.2 HUMAN_OBSERVATION
## 4869 552.2 HUMAN_OBSERVATION
## 4871 552.2 HUMAN_OBSERVATION
## 4872 <NA> HUMAN_OBSERVATION
## scientificName
## 4866 Ricinus communis L.
## 4867 Clinopodium fasciculatum (Benth.) Govaerts
## 4868 Dodonaea viscosa (L.) Jacq.
## 4869 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm.
## 4871 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm.
## 4872 Mimosa quitensis Benth.
## acceptedScientificName kingdom phylum
## 4866 Ricinus communis L. Plantae Tracheophyta
## 4867 Clinopodium fasciculatum (Benth.) Govaerts Plantae Tracheophyta
## 4868 Dodonaea viscosa (L.) Jacq. Plantae Tracheophyta
## 4869 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm. Plantae Tracheophyta
## 4871 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm. Plantae Tracheophyta
## 4872 Mimosa quitensis Benth. Plantae Tracheophyta
## order family genus species
## 4866 Malpighiales Euphorbiaceae Ricinus Ricinus communis
## 4867 Lamiales Lamiaceae Clinopodium Clinopodium fasciculatum
## 4868 Sapindales Sapindaceae Dodonaea Dodonaea viscosa
## 4869 Poales Bromeliaceae Racinaea Racinaea fraseri
## 4871 Poales Bromeliaceae Racinaea Racinaea fraseri
## 4872 Fabales Fabaceae Mimosa Mimosa quitensis
## genericName specificEpithet DPA_VALOR DPA_ANIO DPA_CANTON DPA_DESCAN
## 4866 Ricinus communis 0 2011 1701 QUITO
## 4867 Clinopodium fasciculatum 0 2011 1701 QUITO
## 4868 Dodonaea viscosa 0 2011 1701 QUITO
## 4869 Racinaea fraseri 0 2011 1701 QUITO
## 4871 Racinaea fraseri 0 2011 1701 QUITO
## 4872 Mimosa quitensis 0 2011 1701 QUITO
## DPA_PROVIN DPA_DESPRO km2
## 4866 17 PICHINCHA 4210.91
## 4867 17 PICHINCHA 4210.91
## 4868 17 PICHINCHA 4210.91
## 4869 17 PICHINCHA 4210.91
## 4871 17 PICHINCHA 4210.91
## 4872 17 PICHINCHA 4210.91
reviso que tipo de datos tengo. Para esto necesito extraer la base de datos del mae.pts, para esto uso el @dada y el comando lapply para que vea que es cada columna, i.e. si es numerica o de texto:
lapply(mae.pts@data,class)
## $decimalLatitude
## [1] "numeric"
##
## $decimalLongitude
## [1] "numeric"
##
## $coordinateUncertaintyInMeters
## [1] "numeric"
##
## $locality
## [1] "character"
##
## $stateProvince
## [1] "character"
##
## $eventDate
## [1] "character"
##
## $doselAltura
## [1] "character"
##
## $cobertura
## [1] "character"
##
## $fenologia
## [1] "character"
##
## $relieve
## [1] "character"
##
## $macrorelieve
## [1] "character"
##
## $mesorelieve
## [1] "character"
##
## $verbatimElevation
## [1] "character"
##
## $basisOfRecord
## [1] "character"
##
## $scientificName
## [1] "character"
##
## $acceptedScientificName
## [1] "character"
##
## $kingdom
## [1] "character"
##
## $phylum
## [1] "character"
##
## $order
## [1] "character"
##
## $family
## [1] "character"
##
## $genus
## [1] "character"
##
## $species
## [1] "character"
##
## $genericName
## [1] "character"
##
## $specificEpithet
## [1] "character"
##
## $DPA_VALOR
## [1] "integer"
##
## $DPA_ANIO
## [1] "character"
##
## $DPA_CANTON
## [1] "character"
##
## $DPA_DESCAN
## [1] "character"
##
## $DPA_PROVIN
## [1] "character"
##
## $DPA_DESPRO
## [1] "character"
##
## $km2
## [1] "numeric"
fijarse que la mayoria son texto y no puedo hacer mas que tabulaciones para obtener frecuencias. Las numericas son pertinentes para otros tipos de análisis, entonces empiezo filtrándolas para revisarlas en detalle:
#primero necesito identificar donde estan las columnas numericas
cols.num <- sapply(mae.pts@data,class)=="numeric"
#y listo los primeros registros
head(mae.pts[,cols.num])
## decimalLatitude decimalLongitude coordinateUncertaintyInMeters km2
## 4866 0.053644 -78.45204 30 4210.91
## 4867 0.053644 -78.45204 30 4210.91
## 4868 0.053644 -78.45204 30 4210.91
## 4869 0.053644 -78.45204 30 4210.91
## 4871 0.053644 -78.45204 30 4210.91
## 4872 0.077063 -78.43799 30 4210.91
observar que son apenas 4! el km2 es el que calculamos previamente es el mismo valor para todos los registros (no nos sirve aqui). Fijarse que no aparece altitud (en la base se llama verbatimElevation) u otros como altura del dosel. Esto pasa porque el dato se codifico como texto por lo que debo hacer algunas transformarciones para recuperarlos. Aqui empiezo transformando en numeros las alturas
#primero transformo en numeros la altitud
mae.pts@data$verbatimElevation <- as.numeric(mae.pts@data$verbatimElevation)
ahora voy por otras columnas que son potencialmente numericas y que constan como texto. Primero voy a limpiar “doselAltura”. Fijarse que son rangos, dos opciones: 1) los dejo como rangos pero tendria que seguir siendo texto; o 2) tomo solo el último valor para transformarlo en número (pierdo un dato). Decido la primera opción, para esto elimino el texto redundante “altura de dosel” con el comando gsub
unique(mae.pts@data$doselAltura)
## [1] "Altura de dosel 2m - 5m" "Altura de dosel < 2 m"
## [3] "Altura de dosel 5m - 10m"
mae.pts@data$doselAltura <- gsub("Altura de dosel ","",mae.pts@data$doselAltura)
fijarse como queda ahora, son 3 rangos. Transformo esto este dato en factor. Este tipo de dato es util con variables categoricas tipo ordinales
unique(mae.pts@data$doselAltura)
## [1] "2m - 5m" "< 2 m" "5m - 10m"
mae.pts@data$doselAltura <- factor(mae.pts@data$doselAltura)
ahora voy por la cobertura. Listo los valores unicos, son apenas 2. Procedo de igual forma, los limpio y transformo en factores
unique(mae.pts@data$cobertura)
## [1] " Cobertura Cerrada (>75%)" " Cobertura Semicerrada (50 - 75%)"
fijarse como queda ahora. Aqui uso el comando levels para ver las categorias de cada factor, esto es similar al comando unique
mae.pts@data$cobertura <- gsub(" Cobertura ","",mae.pts@data$cobertura)
mae.pts@data$cobertura <- factor(mae.pts@data$cobertura)
levels(mae.pts@data$cobertura)
## [1] "Cerrada (>75%)" "Semicerrada (50 - 75%)"
revisemos la base para ver su evolucion
head(mae.pts@data)
## decimalLatitude decimalLongitude coordinateUncertaintyInMeters
## 4866 0.053644 -78.45204 30
## 4867 0.053644 -78.45204 30
## 4868 0.053644 -78.45204 30
## 4869 0.053644 -78.45204 30
## 4871 0.053644 -78.45204 30
## 4872 0.077063 -78.43799 30
## locality stateProvince eventDate doselAltura
## 4866 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4867 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4868 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4869 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4871 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4872 Via Tanlahua Perucho Pichincha 2012-06-13T00:00:00 2m - 5m
## cobertura fenologia
## 4866 Cerrada (>75%) Fenología Siempreverde
## 4867 Cerrada (>75%) Fenología Siempreverde
## 4868 Cerrada (>75%) Fenología Siempreverde
## 4869 Cerrada (>75%) Fenología Siempreverde
## 4871 Cerrada (>75%) Fenología Siempreverde
## 4872 Semicerrada (50 - 75%) Relieve general: De Montana
## relieve macrorelieve
## 4866 Relieve general: De Montana Macrorelieve: Cordillera
## 4867 Relieve general: De Montana Macrorelieve: Cordillera
## 4868 Relieve general: De Montana Macrorelieve: Cordillera
## 4869 Relieve general: De Montana Macrorelieve: Cordillera
## 4871 Relieve general: De Montana Macrorelieve: Cordillera
## 4872 Macrorelieve: Piedemonte Mesorelieve: Glacis
## mesorelieve verbatimElevation basisOfRecord
## 4866 Mesorelieve: Edificios Volcanicos 552.2 HUMAN_OBSERVATION
## 4867 Mesorelieve: Edificios Volcanicos 552.2 HUMAN_OBSERVATION
## 4868 Mesorelieve: Edificios Volcanicos 552.2 HUMAN_OBSERVATION
## 4869 Mesorelieve: Edificios Volcanicos 552.2 HUMAN_OBSERVATION
## 4871 Mesorelieve: Edificios Volcanicos 552.2 HUMAN_OBSERVATION
## 4872 <NA> NA HUMAN_OBSERVATION
## scientificName
## 4866 Ricinus communis L.
## 4867 Clinopodium fasciculatum (Benth.) Govaerts
## 4868 Dodonaea viscosa (L.) Jacq.
## 4869 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm.
## 4871 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm.
## 4872 Mimosa quitensis Benth.
## acceptedScientificName kingdom phylum
## 4866 Ricinus communis L. Plantae Tracheophyta
## 4867 Clinopodium fasciculatum (Benth.) Govaerts Plantae Tracheophyta
## 4868 Dodonaea viscosa (L.) Jacq. Plantae Tracheophyta
## 4869 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm. Plantae Tracheophyta
## 4871 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm. Plantae Tracheophyta
## 4872 Mimosa quitensis Benth. Plantae Tracheophyta
## order family genus species
## 4866 Malpighiales Euphorbiaceae Ricinus Ricinus communis
## 4867 Lamiales Lamiaceae Clinopodium Clinopodium fasciculatum
## 4868 Sapindales Sapindaceae Dodonaea Dodonaea viscosa
## 4869 Poales Bromeliaceae Racinaea Racinaea fraseri
## 4871 Poales Bromeliaceae Racinaea Racinaea fraseri
## 4872 Fabales Fabaceae Mimosa Mimosa quitensis
## genericName specificEpithet DPA_VALOR DPA_ANIO DPA_CANTON DPA_DESCAN
## 4866 Ricinus communis 0 2011 1701 QUITO
## 4867 Clinopodium fasciculatum 0 2011 1701 QUITO
## 4868 Dodonaea viscosa 0 2011 1701 QUITO
## 4869 Racinaea fraseri 0 2011 1701 QUITO
## 4871 Racinaea fraseri 0 2011 1701 QUITO
## 4872 Mimosa quitensis 0 2011 1701 QUITO
## DPA_PROVIN DPA_DESPRO km2
## 4866 17 PICHINCHA 4210.91
## 4867 17 PICHINCHA 4210.91
## 4868 17 PICHINCHA 4210.91
## 4869 17 PICHINCHA 4210.91
## 4871 17 PICHINCHA 4210.91
## 4872 17 PICHINCHA 4210.91
todavia algunas columnas que no son del todo confiables, (e.g. registro 6 columna fenologia “Relieve general: De Montana” no corresponde) y hay algunas que son irrelevantes que se adjuntaron posterior al recorte con el area de estudio (e.g. DPA_VALOR). Procedo a limpiarlas
#empiezo con fenologia, reemplazo estos valores con NA o valor ausente, usando el comando grepl para identificarlos
mae.pts@data$fenologia[!grepl("Fenología ",mae.pts@data$fenologia)] <- NA
#finalizo limpiando la palabra fenologia de la columna (dato redundante)
mae.pts@data$fenologia <- gsub("Fenología","",mae.pts@data$fenologia)
#reviso
unique(mae.pts@data$fenologia)
## [1] " Siempreverde" NA
reviso ahora la columna relieve, el mismo procedimiento
mae.pts@data$relieve[!grepl("Relieve general:",mae.pts@data$relieve)] <- NA #elimino
mae.pts@data$relieve <- gsub(" Relieve general: ","",mae.pts@data$relieve) #suprimo dato redundante
unique(mae.pts@data$relieve)
## [1] "De Montana" NA
con la columna macrorelieve, el mismo procedimiento
mae.pts@data$macrorelieve[!grepl("Macrorelieve:",mae.pts@data$macrorelieve)] <- NA #elimino
mae.pts@data$macrorelieve <- gsub(" Macrorelieve: ","",mae.pts@data$macrorelieve) #suprimo dato redundante
unique(mae.pts@data$macrorelieve)
## [1] "Cordillera" NA "Valle Tectonico" "Piedemonte"
y ahora con la columna mesorelieve
mae.pts@data$mesorelieve[!grepl("Mesorelieve:",mae.pts@data$mesorelieve)] <- NA #elimino
mae.pts@data$mesorelieve <- gsub(" Mesorelieve: ","",mae.pts@data$mesorelieve) #suprimo dato redundante
unique(mae.pts@data$mesorelieve)
## [1] "Edificios Volcanicos" NA "Colinas Altas"
## [4] "Llanuras de ablacion" "Cuestas"
finalmente, eliminamos columnas irrelevantes
mae.pts@data[,c("DPA_VALOR","DPA_ANIO","DPA_CANTON","DPA_PROVIN")] <- NULL
y observamos el resultado antes proceder a graficar
head(mae.pts@data)
## decimalLatitude decimalLongitude coordinateUncertaintyInMeters
## 4866 0.053644 -78.45204 30
## 4867 0.053644 -78.45204 30
## 4868 0.053644 -78.45204 30
## 4869 0.053644 -78.45204 30
## 4871 0.053644 -78.45204 30
## 4872 0.077063 -78.43799 30
## locality stateProvince eventDate doselAltura
## 4866 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4867 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4868 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4869 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4871 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4872 Via Tanlahua Perucho Pichincha 2012-06-13T00:00:00 2m - 5m
## cobertura fenologia relieve macrorelieve
## 4866 Cerrada (>75%) Siempreverde De Montana Cordillera
## 4867 Cerrada (>75%) Siempreverde De Montana Cordillera
## 4868 Cerrada (>75%) Siempreverde De Montana Cordillera
## 4869 Cerrada (>75%) Siempreverde De Montana Cordillera
## 4871 Cerrada (>75%) Siempreverde De Montana Cordillera
## 4872 Semicerrada (50 - 75%) <NA> <NA> <NA>
## mesorelieve verbatimElevation basisOfRecord
## 4866 Edificios Volcanicos 552.2 HUMAN_OBSERVATION
## 4867 Edificios Volcanicos 552.2 HUMAN_OBSERVATION
## 4868 Edificios Volcanicos 552.2 HUMAN_OBSERVATION
## 4869 Edificios Volcanicos 552.2 HUMAN_OBSERVATION
## 4871 Edificios Volcanicos 552.2 HUMAN_OBSERVATION
## 4872 <NA> NA HUMAN_OBSERVATION
## scientificName
## 4866 Ricinus communis L.
## 4867 Clinopodium fasciculatum (Benth.) Govaerts
## 4868 Dodonaea viscosa (L.) Jacq.
## 4869 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm.
## 4871 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm.
## 4872 Mimosa quitensis Benth.
## acceptedScientificName kingdom phylum
## 4866 Ricinus communis L. Plantae Tracheophyta
## 4867 Clinopodium fasciculatum (Benth.) Govaerts Plantae Tracheophyta
## 4868 Dodonaea viscosa (L.) Jacq. Plantae Tracheophyta
## 4869 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm. Plantae Tracheophyta
## 4871 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm. Plantae Tracheophyta
## 4872 Mimosa quitensis Benth. Plantae Tracheophyta
## order family genus species
## 4866 Malpighiales Euphorbiaceae Ricinus Ricinus communis
## 4867 Lamiales Lamiaceae Clinopodium Clinopodium fasciculatum
## 4868 Sapindales Sapindaceae Dodonaea Dodonaea viscosa
## 4869 Poales Bromeliaceae Racinaea Racinaea fraseri
## 4871 Poales Bromeliaceae Racinaea Racinaea fraseri
## 4872 Fabales Fabaceae Mimosa Mimosa quitensis
## genericName specificEpithet DPA_DESCAN DPA_DESPRO km2
## 4866 Ricinus communis QUITO PICHINCHA 4210.91
## 4867 Clinopodium fasciculatum QUITO PICHINCHA 4210.91
## 4868 Dodonaea viscosa QUITO PICHINCHA 4210.91
## 4869 Racinaea fraseri QUITO PICHINCHA 4210.91
## 4871 Racinaea fraseri QUITO PICHINCHA 4210.91
## 4872 Mimosa quitensis QUITO PICHINCHA 4210.91
observar que hay algo raro un “NA” significa que estos datos estan ausentes (lo asignamos en los pasos anteriores por incertidumbre). Este tipo de casos se los puede rellenar, ignorar o eliminar, dependendiendo el caso para evitar problemas. Aqui solo los contabilizaremos e ignoraremos dependiendo el caso
#contabilizo NA por columnas
lapply(mae.pts@data,function(x){
x <- table(is.na(x))
})
## $decimalLatitude
##
## FALSE
## 65
##
## $decimalLongitude
##
## FALSE
## 65
##
## $coordinateUncertaintyInMeters
##
## FALSE
## 65
##
## $locality
##
## FALSE
## 65
##
## $stateProvince
##
## FALSE
## 65
##
## $eventDate
##
## FALSE
## 65
##
## $doselAltura
##
## FALSE
## 65
##
## $cobertura
##
## FALSE
## 65
##
## $fenologia
##
## FALSE TRUE
## 59 6
##
## $relieve
##
## FALSE TRUE
## 59 6
##
## $macrorelieve
##
## FALSE TRUE
## 59 6
##
## $mesorelieve
##
## FALSE TRUE
## 59 6
##
## $verbatimElevation
##
## FALSE TRUE
## 59 6
##
## $basisOfRecord
##
## FALSE
## 65
##
## $scientificName
##
## FALSE
## 65
##
## $acceptedScientificName
##
## FALSE
## 65
##
## $kingdom
##
## FALSE
## 65
##
## $phylum
##
## FALSE
## 65
##
## $order
##
## FALSE
## 65
##
## $family
##
## FALSE
## 65
##
## $genus
##
## FALSE
## 65
##
## $species
##
## FALSE TRUE
## 61 4
##
## $genericName
##
## FALSE
## 65
##
## $specificEpithet
##
## FALSE TRUE
## 61 4
##
## $DPA_DESCAN
##
## FALSE
## 65
##
## $DPA_DESPRO
##
## FALSE
## 65
##
## $km2
##
## FALSE
## 65
#y por casos completos, i.e. TODAS las columnas sin NA
table(complete.cases(mae.pts@data))
##
## FALSE TRUE
## 10 55
finalizada la limpieza, empiezo por las variables numericas. Voy a graficar un boxplot, grafico univariado elemental para representar distribuciones. Antes identifico las variables numericas para despues reorganizar la base de datos con la funcion melt de la libraria reshape2 y dibujarlo con el motor de graficos ggplot con la funcion del mismo nombre:
col.num <- sapply(mae.pts@data,is.numeric)
head(mae.pts@data[,col.num])
## decimalLatitude decimalLongitude coordinateUncertaintyInMeters
## 4866 0.053644 -78.45204 30
## 4867 0.053644 -78.45204 30
## 4868 0.053644 -78.45204 30
## 4869 0.053644 -78.45204 30
## 4871 0.053644 -78.45204 30
## 4872 0.077063 -78.43799 30
## verbatimElevation km2
## 4866 552.2 4210.91
## 4867 552.2 4210.91
## 4868 552.2 4210.91
## 4869 552.2 4210.91
## 4871 552.2 4210.91
## 4872 NA 4210.91
diluyendo el dato ahora
mae.pts.num <- reshape2::melt(mae.pts@data[,col.num])
## No id variables; using all as measure variables
head(mae.pts.num)
## variable value
## 1 decimalLatitude 0.053644
## 2 decimalLatitude 0.053644
## 3 decimalLatitude 0.053644
## 4 decimalLatitude 0.053644
## 5 decimalLatitude 0.053644
## 6 decimalLatitude 0.077063
procedo a graficarlo
p <- ggplot(mae.pts.num,aes(y=value)) +
theme(axis.text.x = element_blank(),axis.ticks.x = element_blank()) +
geom_boxplot() +
facet_wrap(variable~.,scales="free",nrow =2)
p
## Warning: Removed 6 rows containing non-finite values (stat_boxplot).
para ver los valores que hacen el boxplot
layer_data(p)
## Warning: Removed 6 rows containing non-finite values (stat_boxplot).
## ymin lower middle upper ymax outliers
## 1 -0.307866 -0.244524 0.053644 0.053644 0.077063
## 2 -78.452041 -78.452041 -78.437988 -78.315457 -78.229709
## 3 30.000000 30.000000 30.000000 30.000000 30.000000
## 4 552.200000 552.200000 552.200000 2811.900000 3791.190000
## 5 4210.910000 4210.910000 4210.910000 4210.910000 4210.910000
## notchupper notchlower x flipped_aes PANEL group y ymin_final
## 1 0.1120774 -4.789438e-03 0 FALSE 1 -1 NA -0.307866
## 2 -78.4112210 -7.846476e+01 0 FALSE 2 -1 NA -78.452041
## 3 30.0000000 3.000000e+01 0 FALSE 3 -1 30.00 30.000000
## 4 1017.0168538 8.738315e+01 0 FALSE 4 -1 NA 552.200000
## 5 4210.9100000 4.210910e+03 0 FALSE 5 -1 4210.91 4210.910000
## ymax_final xmin xmax xid newx new_width weight colour fill size alpha
## 1 0.077063 -0.375 0.375 1 0 0.75 1 grey20 white 0.5 NA
## 2 -78.229709 -0.375 0.375 1 0 0.75 1 grey20 white 0.5 NA
## 3 30.000000 -0.375 0.375 1 0 0.75 1 grey20 white 0.5 NA
## 4 3791.190000 -0.375 0.375 1 0 0.75 1 grey20 white 0.5 NA
## 5 4210.910000 -0.375 0.375 1 0 0.75 1 grey20 white 0.5 NA
## shape linetype
## 1 19 solid
## 2 19 solid
## 3 19 solid
## 4 19 solid
## 5 19 solid
ahora revisemos las variables categoricas (o de texto) asi como las ordinales (que trabajamos antes)
head(head(mae.pts@data[,!col.num]))
## locality stateProvince eventDate doselAltura
## 4866 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4867 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4868 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4869 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4871 San Antonio de Tanlahua Pichincha 2012-06-13T00:00:00 2m - 5m
## 4872 Via Tanlahua Perucho Pichincha 2012-06-13T00:00:00 2m - 5m
## cobertura fenologia relieve macrorelieve
## 4866 Cerrada (>75%) Siempreverde De Montana Cordillera
## 4867 Cerrada (>75%) Siempreverde De Montana Cordillera
## 4868 Cerrada (>75%) Siempreverde De Montana Cordillera
## 4869 Cerrada (>75%) Siempreverde De Montana Cordillera
## 4871 Cerrada (>75%) Siempreverde De Montana Cordillera
## 4872 Semicerrada (50 - 75%) <NA> <NA> <NA>
## mesorelieve basisOfRecord
## 4866 Edificios Volcanicos HUMAN_OBSERVATION
## 4867 Edificios Volcanicos HUMAN_OBSERVATION
## 4868 Edificios Volcanicos HUMAN_OBSERVATION
## 4869 Edificios Volcanicos HUMAN_OBSERVATION
## 4871 Edificios Volcanicos HUMAN_OBSERVATION
## 4872 <NA> HUMAN_OBSERVATION
## scientificName
## 4866 Ricinus communis L.
## 4867 Clinopodium fasciculatum (Benth.) Govaerts
## 4868 Dodonaea viscosa (L.) Jacq.
## 4869 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm.
## 4871 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm.
## 4872 Mimosa quitensis Benth.
## acceptedScientificName kingdom phylum
## 4866 Ricinus communis L. Plantae Tracheophyta
## 4867 Clinopodium fasciculatum (Benth.) Govaerts Plantae Tracheophyta
## 4868 Dodonaea viscosa (L.) Jacq. Plantae Tracheophyta
## 4869 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm. Plantae Tracheophyta
## 4871 Racinaea fraseri (Baker) M.A.Spencer & L.B.Sm. Plantae Tracheophyta
## 4872 Mimosa quitensis Benth. Plantae Tracheophyta
## order family genus species
## 4866 Malpighiales Euphorbiaceae Ricinus Ricinus communis
## 4867 Lamiales Lamiaceae Clinopodium Clinopodium fasciculatum
## 4868 Sapindales Sapindaceae Dodonaea Dodonaea viscosa
## 4869 Poales Bromeliaceae Racinaea Racinaea fraseri
## 4871 Poales Bromeliaceae Racinaea Racinaea fraseri
## 4872 Fabales Fabaceae Mimosa Mimosa quitensis
## genericName specificEpithet DPA_DESCAN DPA_DESPRO
## 4866 Ricinus communis QUITO PICHINCHA
## 4867 Clinopodium fasciculatum QUITO PICHINCHA
## 4868 Dodonaea viscosa QUITO PICHINCHA
## 4869 Racinaea fraseri QUITO PICHINCHA
## 4871 Racinaea fraseri QUITO PICHINCHA
## 4872 Mimosa quitensis QUITO PICHINCHA
No todas ellas se podran graficar (por tener valores unicos) por ello filtro las que permiten calcular frecuencias. Por lo que se observa las podrian tener valores unicos serían aquellos con cuentas cercana a 65 registros. Aqui los identificas como aquellos con más de 20 categorias
dim(mae.pts)
## [1] 65 27
mae.pts.char <- mae.pts@data[,!col.num]
cols.class <- sapply(sapply(mae.pts.char,unique),length)
cols.class <- cols.class <=10
table(cols.class)
## cols.class
## FALSE TRUE
## 8 14
y selecciono ahora esas columnas con el numero de clases razonable, manteniendo una columna de clases unicas como “id” para diluirlas previo a graficarlas
mae.pts.char <- mae.pts.char[,cols.class]
mae.pts.char$id <- 1:nrow(mae.pts@data)
mae.pts.char <- melt(mae.pts.char,id.vars="id")
## Warning: attributes are not identical across measure variables; they will be
## dropped
head(mae.pts.char)
## id variable value
## 1 1 locality San Antonio de Tanlahua
## 2 2 locality San Antonio de Tanlahua
## 3 3 locality San Antonio de Tanlahua
## 4 4 locality San Antonio de Tanlahua
## 5 5 locality San Antonio de Tanlahua
## 6 6 locality Via Tanlahua Perucho
y lo grafico barras de frecuencias
q <- ggplot(mae.pts.char,aes(x=value)) +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
geom_bar(stat="count") +
#facet_grid(.~variable,scales="free")
facet_wrap(.~variable,ncol=4,scales="free")
q
fijarse en las clases NA que constituyen los registros que no pudieron recuperarse y que se perdieron. Para terminar el ejercicio, grabamos los graficos con ggsave en un directorio de salida:
#recordar que elgrafico esta alojado en la variable p y q
ggsave("/cloud/project/graficos/Quito_boxplot.jpg",p)
## Saving 7 x 5 in image
## Warning: Removed 6 rows containing non-finite values (stat_boxplot).
ggsave("/cloud/project/graficos/Quito_frecuencias.jpg",q,height=40,units="cm") #ajusto el alto para que pueda ver el grafico
## Saving 17.8 x 40 cm image