Introducción

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).

Entorno de R

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)

Seleccion de la unidad territorial

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

Descarga de la información de las parcelas

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")

Primera limpieza de datos

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, ...].

Filtrado espacial de la base

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.

Segunda limpieza de datos

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

Análisis exploratorio

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