Timestamp: Wed Dec 2 11:00:50 2020
Drafted: Francesco Maria Sabatini
Version: 1.1

This report documents the data extraction for sPlot project proposal #31 - The adaptive value of xylem physiology within and across global ecoregions as requested by Daniel Laughlin and Jesse Robert Fleri

library(tidyverse)

library(knitr)
library(kableExtra)
library(viridis)
library(grid)
library(gridExtra)

library(downloader)
library(sp)
library(sf)
library(rgdal)
library(rgeos)

#save temporary files
write("TMPDIR = /data/sPlot/users/Francesco/_tmp", file=file.path(Sys.getenv('TMPDIR'), '.Renviron'))
write("R_USER = /data/sPlot/users/Francesco/_tmp", file=file.path(Sys.getenv('R_USER'), '.Renviron'))
#rasterOptions(tmpdir="/data/sPlot/users/Francesco/_tmp")

Import data from sPlot 3.0

#Import sPlot data
load("/data/sPlot/releases/sPlot3.0/header_sPlot3.0.RData")
load("/data/sPlot/releases/sPlot3.0/DT_sPlot3.0.RData")
load("/data/sPlot/releases/sPlot3.0/Traits_CWMs_sPlot3.RData")
load("/data/sPlot/releases/sPlot3.0/SoilClim_sPlot3.RData")

Import data on xylem traits, provided by Jesse Robert Fleri on October 26th, 2020.

load("xylem_data.RData")

1 Extract plots from sPlot based on species with xylem traits

Extract all plots containing at least one species in the xylem list.

species_list <- xylem_data$Species
plot.sel <- DT2 %>%
  filter(DT2$Species %in% species_list) %>%
  dplyr::select(PlotObservationID) %>%
  distinct() %>%
  pull(PlotObservationID)

#exclude plots without geographic information
header.xylem <- header %>%
  filter(PlotObservationID %in% plot.sel) %>% 
  filter(!is.na(Latitude))
#refine plot.sel
plot.sel <- header.xylem$PlotObservationID

DT.xylem <- DT2 %>% 
  filter(Taxon_group %in% c("Vascular plant", "Unknown")) %>% 
  filter(PlotObservationID %in% plot.sel)

Out of the 1841 species in the sRoot list, 1306 species are present in sPlot, for a total of 5510288 records, across 1243899 plots.

2 Extract woody species

This is partial selection, as we don’t have information on the growth form of all species in sPlot

#Select all woody species and extract relevant traits from TRY
woody_species_traits <- sPlot.traits %>%
  dplyr::select(Species, GrowthForm, is.tree.or.tall.shrub, n,
                starts_with("StemDens"),
                starts_with("Stem.cond.dens"), 
                starts_with("StemConduitDiameter"),
                starts_with("LDCM"),
                starts_with("SLA"),
                starts_with("PlantHeight"), 
                starts_with("Wood"), 
                starts_with("SpecificRootLength_mean")) %>%
  filter( (Species %in% species_list) |
          grepl(pattern = "tree|shrub", x = GrowthForm) |
          is.tree.or.tall.shrub==T
              ) %>% 
  #counter proof - exclude species == herb
  filter(GrowthForm != "herb" | is.na(GrowthForm))

table(woody_species_traits$GrowthForm, exclude=NULL)
## 
##            herb      herb/shrub herb/shrub/tree           other           shrub      shrub/tree            tree 
##               0              48               2              55            7826             133           13458 
##            <NA> 
##              66
#
# MEMO for FMS: some standardization needed in sPlot 3.0 for GF names
Example of gap-filled trait data from TRY (20 randomly selected species)
Species GrowthForm is.tree.or.tall.shrub n StemDens_mean StemDens_sd Stem.cond.dens_mean Stem.cond.dens_sd StemConduitDiameter_mean StemConduitDiameter_sd SLA_mean SLA_sd PlantHeight_mean PlantHeight_sd Wood.vessel.length_mean WoodFiberLength_mean Wood.vessel.length_sd WoodFiberLength_sd SpecificRootLength_mean
Guarea montana tree TRUE 8 0.5858742 0.0301498 10.979643 0.2196957 50.41260 1.855087 18.916034 6.5206777 15.665458 0.3536615 611.9516 1333.5654 11.211612 15.10079 736.6293
Memecylon pauciflorum shrub FALSE 1 0.7556743 NA 13.621478 NA 34.84398 NA 9.740907 NA 7.055767 NA 595.8648 1122.8055 NA NA 654.5461
Lyonia squamulosa tree TRUE 4 0.6367331 0.0073622 133.937835 36.2900546 40.48682 10.335838 8.960477 0.1550139 2.092577 0.0547571 614.5808 836.4237 156.854966 122.75599 3277.9704
Croton carpostellatus shrub NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Symplocos corymboclados tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Racosperma inceanum shrub FALSE 1 0.9173548 NA 32.034694 NA 33.08760 NA 5.842977 NA 2.630325 NA 260.0648 815.4001 NA NA 1044.3426
Syzygium yunnanense tree TRUE 1 0.6709237 NA 29.838787 NA 37.67867 NA 9.101109 NA 15.211761 NA 393.3089 904.2242 NA NA 2510.9743
Conyza incana shrub FALSE 1 0.5512409 NA 87.853476 NA 31.59114 NA 17.406322 NA 0.778091 NA 424.5068 671.1083 NA NA 6694.7860
Diphysa shrub NA 15 0.7794898 0.1593987 5.273908 1.1312733 41.98475 2.886195 14.589393 1.3170600 2.974295 0.2077748 245.6972 825.3600 11.708001 32.31287 1221.5094
Ribes hirtum shrub NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Styrax grandiflorus tree TRUE 1 0.4671375 NA 33.840797 NA 43.94415 NA 14.145716 NA 14.963317 NA 498.1904 772.8494 NA NA 1297.9105
Eschweilera apiculata tree TRUE 9 0.7505803 0.0041541 10.576050 0.2951158 78.31194 2.146229 11.589964 0.3951154 27.429864 1.0287612 468.7105 1503.2446 7.704811 13.52139 778.2581
Persea schiedeana tree TRUE 1 0.5007033 NA 17.566846 NA 55.56977 NA 10.261233 NA 9.211625 NA 480.6575 1133.4095 NA NA 1928.6155
Coelocaryon preussii tree TRUE 35 0.4905614 0.0484178 7.421855 0.7438196 31.85978 2.145381 15.679578 2.9380295 12.746193 1.6766921 360.9284 1200.7816 14.194417 88.54092 3094.0897
Hibiscus peripteroides tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Dendropanax caucanus tree TRUE 20 0.4402174 0.0135227 31.876560 1.7936267 23.63052 1.159723 15.625599 2.7468579 13.059134 1.4795529 649.5451 1304.9038 31.320617 38.60228 2356.5024
Combretaceae tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Ozoroa homblei shrub FALSE 7 0.6785542 0.0110582 11.194790 0.4246382 86.76049 2.857780 8.225762 0.2473602 2.071787 0.3695247 444.9354 1017.9627 27.544033 50.02243 785.7581
Acacia sulcata tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Benthamina alyxifolia shrub NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

Selected traits are:

Codes correspond to those reported in TRY

#subset DT.xylem to only retain woody species
DT.xylem <- DT.xylem %>% 
  filter(Species %in% (woody_species_traits$Species))
nrow(DT.xylem)
## [1] 8547026

Merge relative cover across vegetation layers, if needed, and normalize to 1 (=100%)

###combine cover values across layers
combine.cover <- function(x){
    while (length(x)>1){
      x[2] <- x[1]+(100-x[1])*x[2]/100
      x <- x[-1]
    }
    return(x)
}

DT.xylem <- DT.xylem %>%
  dplyr::select(PlotObservationID, Species,Layer, Relative_cover) %>%
  # normalize relative cover to 1 for each plot x layer combination
  left_join({.} %>% 
              group_by(PlotObservationID, Layer) %>% 
              summarize(Tot.Cover=sum(Relative_cover), .groups="drop"), 
            by=c("PlotObservationID", "Layer")) %>% 
  mutate(Relative_cover=Relative_cover/Tot.Cover) %>% 
  group_by(PlotObservationID, Species) %>%
  # merge layers together
  summarize(Relative_cover=combine.cover(Relative_cover), .groups="drop") %>%
  ungroup() %>% 
  # normalize relative cover to 1 after merging layers together
  left_join({.} %>% 
              group_by(PlotObservationID) %>% 
              summarize(Tot.Cover=sum(Relative_cover), .groups="drop"), 
            by="PlotObservationID") %>% 
  mutate(Relative_cover=Relative_cover/Tot.Cover) 

nrow(DT.xylem)
## [1] 7303930

double check that covers are properly standardized

DT.xylem %>% 
  filter(PlotObservationID %in% sample(header.xylem$PlotObservationID, 10, replace=F)) %>% 
  group_by(PlotObservationID) %>% 
  summarize(tot.cover=sum(Relative_cover), .groups="drop")
## # A tibble: 8 x 2
##   PlotObservationID tot.cover
##               <dbl>     <dbl>
## 1             25202         1
## 2             41158         1
## 3            709456         1
## 4            751505         1
## 5           1590085         1
## 6           1912386         1
## 7           1916127         1
## 8           1968921         1

3 Calculate CWMs and trait coverage

Calculate CWM and trait coverage for each trait and each plot. Select plots having more than 80% coverage for at least one trait.

# Merge species data table with traits
CWM.xylem0 <- DT.xylem %>%
  as_tibble() %>%
  dplyr::select(PlotObservationID, Species, Relative_cover) %>%
  left_join(xylem_data %>%
              dplyr::select(Species, P50, Ks), 
            by="Species")

# Calculate CWM for each trait in each plot
CWM.xylem1 <- CWM.xylem0 %>%
  group_by(PlotObservationID) %>%
  summarize_at(.vars= vars(P50:Ks),
               .funs = list(~weighted.mean(., Relative_cover, na.rm=T)), 
               .groups="drop") %>%
  dplyr::select(PlotObservationID, order(colnames(.))) %>%
  pivot_longer(-PlotObservationID, names_to="trait", values_to="trait.value")

# Calculate coverage for each trait in each plot
CWM.xylem2 <- CWM.xylem0 %>%
  mutate_at(.funs = list(~if_else(is.na(.),0,1) * Relative_cover), 
            .vars = vars(P50:Ks)) %>%
  group_by(PlotObservationID) %>%
  summarize_at(.vars= vars(P50:Ks),
               .funs = list(~sum(., na.rm=T)), 
               .groups="drop") %>%
  dplyr::select(PlotObservationID, order(colnames(.))) %>%
  pivot_longer(-PlotObservationID, names_to="trait", values_to="trait.coverage")

# Calculate CWV
variance2.fun <- function(trait, abu){
  res <- as.double(NA)
  #nam <- nam[!is.na(trait)]
  abu <- abu[!is.na(trait)]
  trait <- trait[!is.na(trait)]
  abu <- abu/sum(abu)
  if (length(trait)>1){
    # you need more than 1 observation to calculate
    # skewness and kurtosis
    # for calculation see 
    # http://r.789695.n4.nabble.com/Weighted-skewness-and-curtosis-td4709956.html
    m.trait <- weighted.mean(trait,abu)
    res <- sum(abu*(trait-m.trait)^2)
  }
  res
}

CWM.xylem3 <- CWM.xylem0 %>%
  group_by(PlotObservationID) %>%
  summarize_at(.vars= vars(P50:Ks),
               .funs = list(~variance2.fun(., Relative_cover))) %>%
  dplyr::select(PlotObservationID, order(colnames(.))) %>%
  pivot_longer(-PlotObservationID, names_to="trait", values_to="trait.variance")

## Calculate proportion of species having traits
CWM.xylem4 <- CWM.xylem0 %>%
  group_by(PlotObservationID) %>%
  summarize_at(.vars= vars(P50:Ks),
               .funs = list(~sum(!is.na(.)))) %>%
  dplyr::select(PlotObservationID, order(colnames(.))) %>%
  pivot_longer(-PlotObservationID, names_to="trait", values_to="trait.nspecies")

# Join together
CWM.xylem <- CWM.xylem1 %>%
  left_join(CWM.xylem2, by=c("PlotObservationID", "trait")) %>%
  left_join(CWM.xylem3, by=c("PlotObservationID", "trait")) %>%
  left_join(CWM.xylem4, by=c("PlotObservationID", "trait")) %>%
  left_join(CWM.xylem0 %>% 
              group_by(PlotObservationID) %>%
              summarize(sp.richness=n()), by=c("PlotObservationID"), 
            .groups="drop") %>%
  mutate(trait.coverage.nspecies=trait.nspecies/sp.richness) %>%
  #filter(trait.coverage>=0.8) %>%
  arrange(PlotObservationID)
## `summarise()` ungrouping output (override with `.groups` argument)
Example of CWM data file
PlotObservationID trait trait.value trait.coverage trait.variance trait.nspecies sp.richness trait.coverage.nspecies
5 Ks 1.6950265 0.1428571 NA 1 4 0.2500000
5 P50 -1.5003056 0.1428571 NA 1 4 0.2500000
16 Ks 0.1557417 0.4838710 0.0014506 2 7 0.2857143
16 P50 -2.3015323 0.5000000 0.5938076 3 7 0.4285714
17 Ks 0.3915309 0.6385457 0.1519621 5 7 0.7142857
17 P50 -3.2692863 0.6385457 3.5600373 5 7 0.7142857
18 Ks 0.4580143 0.1861111 0.0410046 4 10 0.4000000
18 P50 -3.8911671 0.8333333 5.0350743 8 10 0.8000000
19 Ks 0.7376319 0.3353176 0.1460626 5 14 0.3571429
19 P50 -3.3159887 0.6514433 1.2686962 9 14 0.6428571
20 Ks 0.3050261 0.0175439 0.0160221 2 7 0.2857143
20 P50 -2.7121667 0.1842105 1.0054947 3 7 0.4285714
21 Ks 0.3050261 0.5000000 0.0160221 2 8 0.2500000
21 P50 -3.8529856 0.8877551 4.3799595 3 8 0.3750000
22 Ks NaN 0.0000000 NA 0 2 0.0000000
22 P50 NaN 0.0000000 NA 0 2 0.0000000
26 Ks 0.4665221 0.4107143 0.0210918 2 8 0.2500000
26 P50 -3.8980845 0.5576923 1.2427961 5 8 0.6250000
27 Ks 0.1500000 0.0157895 NA 1 7 0.1428571
27 P50 -4.0094507 0.0263158 5.2985022 2 7 0.2857143
CWM.xylem08 <- CWM.xylem %>%
  filter(trait.coverage>=0.8)
Number of plots with >=.8 coverage per trait
trait num.plots
Ks 92390
P50 328854
#Create list of plots having at least one trait with >=.8 coverage and extract header data

#plot80perc <- (CWM.xylem %>%
#  dplyr::select(PlotObservationID) %>%
#  distinct())$PlotObservationID

#DT.xylem08 <- DT.xylem %>%
#  filter(PlotObservationID %in% header.xylem$PlotID)

#CWM.xylem <- CWM.xylem %>%
#  filter(PlotObservationID %in% header.xylem$PlotID) 
Completeness of header data
Header file - Columns present and % completeness
Completeness_perc
GIVD ID 100.0000000
TV2 relevé number 100.0000000
ORIG_NUM 0.0000000
GUID 100.0000000
Longitude 100.0000000
Latitude 100.0000000
Location uncertainty (m) 95.2332143
Country 99.9024840
CONTINENT 100.0000000
sBiome 100.0000000
sBiomeID 100.0000000
Ecoregion 100.0000000
EcoregionID 100.0000000
Locality 60.0711955
Relevé area (m²) 72.9304389
Cover abundance scale 100.0000000
Date of recording 87.1848920
Plants recorded 99.9995176
Herbs identified (y/n) 2.7120369
Mosses identified (y/n) 28.1317052
Lichens identified (y/n) 16.5481281
elevation_dem 76.7635475
Altitude (m) 84.2278995
Aspect (°) 32.4683917
Slope (°) 42.1346910
Forest 74.7359713
Shrubland 74.7359713
Grassland 74.7359713
Wetland 74.7359713
Sparse.vegetation 74.7359713
Naturalness 47.8286420
ESY 72.6604813
Cover total (%) 21.1663487
Cover tree layer (%) 17.0958414
Cover shrub layer (%) 18.6167848
Cover herb layer (%) 36.1548647
Cover moss layer (%) 18.1640149
Cover lichen layer (%) 0.3121636
Cover algae layer (%) 0.0567570
Cover litter layer (%) 4.5212674
Cover open water (%) 0.1392396
Cover bare rock (%) 1.7043988
Height (highest) trees (m) 7.5998936
Height lowest trees (m) 0.4962622
Height (highest) shrubs (m) 5.0408433
Height lowest shrubs (m) 0.5556721
Aver. height (high) herbs (cm) 9.5916148
Aver. height lowest herbs (cm) 2.7043996
Maximum height herbs (cm) 2.4629813
Maximum height cryptogams (mm) 0.1219552

The process results in 1243899 plots selected, for a total of 1932574 trait * plot combinations.

Geographical distribution of plots

countries <- map_data("world")
ggworld <- ggplot(countries, aes(x=long, y=lat, group = group)) +
  geom_polygon(col=NA, lwd=3, fill = gray(0.9)) +
  geom_point(data=header.xylem, aes(x=Longitude, y=Latitude, group=1), col="red", alpha=0.5, cex=0.7, shape="+") + 
  theme_bw()
ggworld

Summarize data across data sets in sPlot, and create list of data custodians

db.out <- read_csv("/data/sPlot/users/Francesco/_sPlot_Management/Consortium/Databases.out.csv") %>%
  dplyr::select(`GIVD ID`, Custodian)
data.origin <- header.xylem %>% 
   group_by(`GIVD ID`) %>% 
   summarize(Num.plot=n(), .groups="drop") %>%
   left_join(db.out)
Data Origin
GIVD ID Num.plot Custodian
00-00-001 1634 Oliver L. Phillips
00-00-003 2318 Brian Enquist
00-00-004 297 Risto Virtanen
00-00-005 115 Anne D. Bjorkman
00-RU-001 1100 Vasiliy Martynenko
00-RU-002 1044 Milan Chytrý
00-RU-006 1079 Sergey Yamalov
00-RU-XXX 186 Olga Demina
00-TR-001 6653 Ali Kavgacı
00-TR-002 962 Deniz Işık Gürsoy
AF-00-001 80 Marco Schmidt
AF-00-003 80 Norbert Jürgens
AF-00-003 80 Norbert Jürgens
AF-00-006 1070 Miguel Alvarez
AF-00-008 207 Hjalmar Kühl
AF-00-009 189 Rasmus Revermann
AF-00-010 16 Petr Sklenar
AF-00-011 93 Bruno Hérault
AF-CD-001 18 Kim Sarah Jacobsen
AF-CM-001 57 Jiri Dolezal
AF-EG-XXX 1596 Mohamed Abd El-Rouf Mousa El-Sheikh
AF-ET-001 36 Desalegn Wana
AF-MA-001 203 Manfred Finckh
AF-NA-001 9 Ben Strohbach
AF-ZA-003 1736 John Janssen
AF-ZW-001 20 Cyrus Samimi
AS-00-001 4536 Tomáš Černý
AS-00-003 629 Arkadiusz Nowak
AS-BD-001 150 Mohammed A.S. Arfin Khan
AS-CN-001 84 Hongyan Liu
AS-CN-002 32 Karsten Wesche
AS-CN-003 27 Helge Bruelheide
AS-CN-004 380 Zhiyao Tang
AS-CN-007 843 Zhiyao Tang
AS-CN-008 432 Hua-Feng Wang
AS-CN-XXX 70 Cindy Q. Tang
AS-EG-001 3 Mohamed Z. Hatim
AS-ID-001 23 Michael Kessler
AS-ID-002 142 Holger Kreft
AS-ID-XXX 809 Jiri Dolezal
AS-IR-001 810 Jalil Noroozi
AS-IR-006 1193 Hamid Gholizadeh
AS-JP-002 46720 Yasuhiro Kubota
AS-KG-001 439 Peter Borchardt
AS-KZ-001 57 Viktoria Wagner
AS-MN-001 147 Henrik von Wehrden
AS-RU-001 112 Victor Chepinoga
AS-RU-002 3345 Andrey Korolyuk
AS-RU-004 158 Norbert Hölzel
AS-RU-005 530 Igor Lavrinenko
AS-SA-001 17 Mohamed Abd El-Rouf Mousa El-Sheikh
AS-TJ-001 15 Kim André Vanselow
AS-TR-002 1145 Emin Uğurlu
AS-TW-001 885 Ching-Feng Li
AS-YE-001 8 Michele De Sanctis
AU-AU-002 7797 Ben Sparrow
AU-AU-003 12767 John Thomas Hunter
AU-AU-XXX 4405 Paul David Macintyre
AU-NC-001 137 Jérôme Munzinger
AU-NZ-001 15738 Susan K. Wiser
AU-PG-001 63 Timothy Whitfeld
EU-00-002 3831 Jürgen Dengler
EU-00-004 3486 Xavier Font
EU-00-004a 1606 Borja Jiménez-Alfaro
EU-00-004b 2401 Xavier Font
EU-00-004c 5805 Maria Pilar Rodríguez-Rojo
EU-00-004d 1449 Borja Jiménez-Alfaro
EU-00-004e 3616 Federico Fernández-González
EU-00-004f 9303 Federico Fernández-González
EU-00-004g 922 Rosario G Gavilán
EU-00-011 11801 Idoia Biurrun
EU-00-013 4540 Kiril Vassilev
EU-00-016 493 Corrado Marcenò
EU-00-017 244 John Janssen
EU-00-018 9097 Jonathan Lenoir
EU-00-019 11044 Kiril Vassilev
EU-00-020 1319 Flavia Landucci
EU-00-021 3714 Andraž Carni
EU-00-022 3825 Tomáš Peterka
EU-00-023 6251 Juan Antonio Campos
EU-00-024 4548 Idoia Biurrun
EU-00-026 6764 Gianmaria Bonari
EU-00-027 12982 Anni Pyykönen
EU-00-028 7983 Filip Küzmič
EU-AL-001 237 Michele De Sanctis
EU-AT-001 40800 Wolfgang Willner
EU-BE-002 18242 Els De Bie
EU-BG-001 3935 Iva Apostolova
EU-CH-005 14182 Thomas Wohlgemuth
EU-CH-011 5010 Ariel Bergamini
EU-CZ-001 67465 Milan Chytrý
EU-DE-001 26234 Florian Jansen
EU-DE-013 19540 Florian Jansen
EU-DE-014 44179 Ute Jandt
EU-DE-020 4607 Ricarda Pätsch
EU-DE-035 2997 Maike Isermann
EU-DE-040 2119 Joachim Schrautzer
EU-DK-002 124884 Jesper Erenskjold Moeslund
EU-ES-001 1024 Aaron Pérez-Haase
EU-FR-003 132104 Emmanuel Garbolino
EU-FR-005 5012 Jean-Claude Gegout
EU-GB-001 29058 John S. Rodwell
EU-GB-XXX 22387 Irina Tatarenko
EU-GR-001 2410 Erwin Bergmeier
EU-GR-005 4696 Panayotis Dimopoulos
EU-GR-006 3182 Ioannis Tsiripidis
EU-HR-001 2941 Zvjezdana Stančić
EU-HR-002 7306 Željko Škvorc
EU-HU-003 4842 János Csiky
EU-IE-001 17901 Úna FitzPatrick
EU-IT-001 6832 Roberto Venanzoni
EU-IT-010 3707 Laura Casella
EU-IT-011 19597 Emiliano Agrillo
EU-IT-019 552 Angela Stanisci
EU-LT-001 6713 Valerijus Rašomavičius
EU-LV-001 5179 Solvita Rūsiņa
EU-MK-001 791 Renata Ćušterevska
EU-NL-001 117910 Stephan M. Hennekens
EU-PL-001 53216 Zygmunt Kącki
EU-PL-003 3849 Remigiusz Pielech
EU-RO-007 9586 Adrian Indreica
EU-RO-008 17914 Eszter Ruprecht
EU-RS-002 2417 Svetlana Aćić
EU-RS-003 3408 Mirjana Cuk
EU-RU-002 1563 Valentin Golub
EU-RU-003 204 Tatiana Lysenko
EU-RU-011 8147 Vadim Prokhorov
EU-RU-014 4824 Larisa Khanina
EU-SI-001 15590 Urban Šilc
EU-SK-001 29122 Milan Valachovič
EU-UA-001 2446 Anna Kuzemko
EU-UA-005 598 Tetiana Dziuba
EU-UA-006 2079 Viktor Onyshchenko
NA-00-002 1294 Luis Cayuela
NA-CA-003 38 Viktoria Wagner
NA-CA-004 147 Isabelle Aubin
NA-CA-005 89 Yves Bergeron
NA-CU-XXX 207 Ute Jandt
NA-GL-001 35 Birgit Jedrzejek
NA-US-002 55282 Robert K. Peet
NA-US-006 15302 Robert K. Peet
NA-US-008 551 Donald Waller
NA-US-014 1390 Donald A. Walker
NA-US-016 490 Dylan Craven
SA-00-002 176 Gwendolyn Peyre
SA-00-003 220 Glenda Mendieta-Leiva
SA-AR-002 232 Melisa Giorgis
SA-AR-003 141 Karina Speziale
SA-BO-003 73 Michael Kessler
SA-BR-002 1576 Alexander Christian Vibrans
SA-CL-002 213 Alvaro G. Gutierrez
SA-CL-003 100 Aníbal Pauchard
SA-CO-003 200 Esteban Alvarez-Davila
SA-EC-001 129 Jürgen Homeier
SA-EC-002 6 Gonzalo Rivas-Torres

The data derive from 155 datasets.

4 Extract climate and soils data

soilclim.xylem <- soilclim %>% 
  filter(PlotObservationID %in% plot.sel) %>% 
  dplyr::rename(Elevation=Elevation_median) %>% 
  dplyr::select(-Elevation_q2.5, -Elevation_q97.5, -Elevation_DEM.res)
Example of climatic and soil variables for 20 randomly selected plots. All values represent the mean in a circle centered on the plot coordinates, having a radius equal to the plot’s location uncertainty (capped to 50 km for computing reasons). Standard deviation (sd) is also reported for each climatic and soil variable.
PlotObservationID Elevation bio01 bio02 bio03 bio04 bio05 bio06 bio07 bio08 bio09 bio10 bio11 bio12 bio13 bio14 bio15 bio16 bio17 bio18 bio19 bio01sd bio02sd bio03sd bio04sd bio05sd bio06sd bio07sd bio08sd bio09sd bio10sd bio11sd bio12sd bio13sd bio14sd bio15sd bio16sd bio17sd bio18sd bio19sd BLDFIE CECSOL CLYPPT CRFVOL ORCDRC PHIHOX SLTPPT SNDPPT BLDFIEsd CECSOLsd CLYPPTsd CRFVOLsd ORCDRCsd PHIHOXsd SLTPPTsd SNDPPTsd
1762681 121 106.00000 43.00000 155.0000 8104.000 252.0000 -28.0000000 280.0000 3.00000 113.000000 223.0000 -4.000000 1461.0000 164.00000 87.00000 22.00000 478.0000 267.00000 363.00000 406.00000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 792.3333 29.00000 16.83333 13.8333333 119.33333 47.66667 37.33333 46.16667 27.339837 1.0954451 0.7527727 0.9831921 10.405127 0.8164966 0.5163978 0.7527727
145165 101 3.00000 58.00000 172.0000 9222.000 185.0000 -151.0000000 336.0000 89.00000 -32.000000 134.0000 -121.000000 484.0000 58.00000 25.00000 29.00000 165.0000 80.00000 164.00000 83.00000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 501.3000 27.70000 12.70000 5.8000000 177.60000 50.30000 36.20000 51.20000 34.919113 0.8232726 0.6749486 0.4216370 14.982953 0.4830459 0.7888106 0.9189366
1758161 1202 79.00000 67.00000 220.0000 8280.000 235.0000 -68.0000000 303.0000 198.00000 -26.000000 198.0000 -32.000000 1975.0000 277.00000 72.00000 46.00000 828.0000 228.00000 828.00000 244.00000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 817.2500 35.50000 19.00000 19.2500000 152.75000 49.75000 36.50000 44.75000 26.170913 1.2909944 0.8164966 0.5000000 6.652067 0.5000000 0.5773503 0.5000000
923129 NA 160.35976 62.17378 247.9451 6664.412 295.7256 45.0670732 250.6646 101.67683 254.064024 254.3689 75.533537 557.5000 76.22561 15.90549 45.33537 222.6768 49.41463 49.42683 178.37500 8.9711649 2.870867 7.4499373 47.364145 8.9427853 9.0965807 4.2155638 13.1423335 9.121949 9.1378105 8.7429537 64.541384 9.356890 2.2079022 1.5013855 26.146713 6.597565 6.599565 21.939371 1245.3117 23.49298 23.87862 18.8700615 33.66001 72.37094 36.21291 39.93371 145.216224 2.8967136 1.8436039 3.5358312 17.995757 3.3922852 2.2528178 2.5691739
1986320 NA 164.00000 38.00000 361.0000 2284.000 223.0000 116.0000000 107.0000 137.00000 196.000000 196.0000 134.000000 1289.0000 236.00000 18.00000 72.00000 693.0000 56.00000 56.00000 618.00000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 842.0000 24.00000 25.00000 13.0000000 84.00000 63.00000 21.00000 54.00000 NA NA NA NA NA NA NA NA
1373162 197 100.13636 79.00000 259.2727 8036.545 254.9545 -50.0000000 304.8636 181.59091 31.090909 204.0000 -12.000000 726.9545 104.68182 39.00000 32.90909 284.7727 118.00000 242.13636 150.40909 1.1668213 0.000000 0.4558423 9.470391 1.2140947 1.0235326 0.3512501 1.2595952 1.108800 1.2724180 1.0235326 12.021716 2.233647 0.6172134 0.9714540 5.698219 1.877181 5.138978 3.018342 1145.9222 21.72622 23.94524 3.4841499 32.28818 60.15274 39.85014 36.19308 64.361131 1.5272017 2.2437837 0.7985949 10.864268 3.6961568 1.5321294 2.0960074
1717768 NA 206.00000 103.00000 422.0000 4999.000 331.0000 89.0000000 243.0000 139.00000 266.000000 272.0000 138.000000 56.0000 15.00000 0.00000 107.00000 41.0000 0.00000 0.00000 37.00000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1332.0000 24.00000 36.25000 7.2500000 27.75000 77.50000 31.25000 33.00000 9.273618 1.6329932 1.2583057 0.5000000 3.304038 0.5773503 0.9574271 1.1547005
69713 222 127.00000 88.00000 290.0000 7605.000 286.0000 -18.0000000 304.0000 53.00000 233.000000 233.0000 27.000000 645.0000 72.00000 35.00000 19.00000 202.0000 113.00000 113.00000 179.00000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1302.2000 24.20000 23.20000 9.8000000 23.60000 66.60000 35.20000 42.20000 21.522082 0.8366600 0.4472136 1.0954451 2.408319 0.5477226 0.8366600 0.4472136
1192205 38 105.00000 68.00000 299.0000 5587.000 229.0000 2.0000000 227.0000 183.00000 85.000000 183.0000 31.000000 727.0000 69.00000 46.00000 11.00000 205.0000 148.00000 205.00000 166.00000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 606.4000 15.40000 16.20000 6.6000000 26.20000 64.00000 47.20000 36.40000 20.132064 1.3416408 0.8366600 0.5477226 1.483240 1.2247449 1.7888544 1.8165902
843257 522 77.00000 69.00000 296.0000 5745.000 205.0000 -29.0000000 234.0000 20.00000 97.000000 157.0000 1.000000 862.0000 91.00000 62.00000 11.00000 259.0000 192.00000 205.00000 224.00000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 707.6000 20.40000 21.60000 14.2000000 38.00000 64.60000 55.80000 22.80000 26.005769 1.1401754 0.5477226 0.4472136 2.345208 0.5477226 0.8366600 0.4472136
145488 180 52.16667 68.00000 199.0000 9675.333 232.8333 -110.1666667 343.0000 182.83333 -42.000000 182.8333 -78.333333 695.1667 91.00000 35.50000 29.50000 259.8333 107.66667 259.83333 119.00000 0.4082483 0.000000 0.0000000 1.966384 0.4082483 0.4082483 0.0000000 0.4082483 0.000000 0.4082483 0.5163978 9.968283 1.414214 0.5477226 0.5477226 3.970726 1.505545 3.970726 1.549193 873.0865 28.91346 14.77885 4.0384615 134.70192 54.99038 38.80769 46.50000 32.696638 2.5508825 1.1983543 0.7363394 28.825851 1.9131390 2.4695305 3.1221103
1581132 117 37.71429 75.00000 191.1429 11188.714 244.0000 -147.2857143 391.2857 188.00000 -69.285714 188.0000 -114.142857 509.8571 69.71429 23.28571 34.42857 197.1429 70.71429 197.14286 76.42857 1.1126973 0.000000 0.3779645 12.311435 1.4142136 1.1126973 0.4879500 1.4142136 1.112697 1.4142136 1.0690450 32.364737 4.151878 1.1126973 0.7867958 11.781745 4.309458 11.781745 4.076647 826.4057 32.88679 20.57547 0.9150943 92.36792 61.25472 42.41509 37.00943 57.202194 2.0485570 1.1376510 1.0430534 8.579406 1.4609933 1.5173155 2.0447158
389930 NA 84.00000 33.00000 165.0000 5841.000 191.0000 -8.0000000 198.0000 168.00000 8.000000 168.0000 8.000000 556.0000 56.00000 31.00000 18.00000 166.0000 105.00000 166.00000 105.00000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 824.7500 19.50000 18.50000 8.5000000 65.50000 61.75000 25.25000 56.00000 43.851074 1.0000000 0.5773503 1.0000000 4.123106 0.5000000 1.5000000 1.4142136
718409 562 103.00000 77.00000 309.0000 5944.000 244.0000 -6.0000000 250.0000 117.00000 29.000000 189.0000 27.000000 709.0000 83.00000 40.00000 20.00000 223.0000 126.00000 195.00000 148.00000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 830.0000 19.20000 19.60000 14.6000000 33.40000 60.20000 33.00000 47.40000 9.137833 0.8366600 1.8165902 1.1401754 1.816590 1.4832397 1.4142136 1.3416408
1013996 222 54.00000 63.00000 212.0000 7983.000 212.0000 -86.0000000 297.0000 161.00000 -55.000000 162.0000 -55.000000 706.0000 85.00000 30.00000 30.00000 255.0000 102.00000 237.00000 102.00000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 638.0000 24.66667 11.00000 9.0000000 80.50000 54.50000 33.33333 55.50000 37.459311 1.0327956 0.8944272 0.6324555 5.128353 0.5477226 0.5163978 1.0488088
117514 NA 100.05199 68.87348 307.4922 5434.270 222.9445 -0.3414211 223.3085 91.71231 80.187175 176.7868 28.663778 806.6915 75.59099 51.86482 10.01040 223.3778 169.99133 218.50953 186.29636 1.5955886 0.332719 0.5003730 14.062967 1.3477253 1.7528449 0.5668633 62.1180027 1.585407 1.4806506 1.7132921 41.571121 3.985972 2.6677914 0.3534002 11.605766 9.059119 12.453399 9.849944 675.8064 13.91451 13.87350 8.4245160 19.73961 62.81977 64.22330 21.87242 84.695727 1.4642037 1.5854461 1.2474760 4.989717 5.4984385 8.4684489 9.3935629
950578 199 95.28571 23.00000 222.7143 2855.429 150.4286 47.4285714 102.8571 89.28571 93.142857 138.2857 60.428571 1751.2857 193.85714 99.00000 22.28571 576.8571 308.28571 401.14286 460.85714 3.1471832 0.000000 0.7559289 7.849780 2.8784917 3.2586880 0.3779645 3.1471832 3.023716 3.1471832 3.2586880 94.547544 10.286376 4.3969687 0.4879500 30.721483 13.659115 22.835853 26.397150 406.3402 29.03093 13.12371 16.8969072 275.49485 50.25773 35.22680 51.69072 29.958613 2.2933491 2.0271991 1.6862467 18.086668 1.1206244 2.2707614 2.2143510
782863 253 86.95789 68.00000 277.7614 6239.361 219.5509 -24.2771930 243.8807 166.33333 4.694737 173.9053 4.694737 708.5053 80.55789 43.41404 17.39298 228.2456 140.49825 204.60702 140.49825 4.6137786 0.000000 0.6217180 20.046230 4.8172637 4.4258769 0.6278284 8.5866202 4.413664 4.8128504 4.4136640 93.590343 10.422128 5.8397448 1.1475417 30.036527 19.164710 27.046126 19.164710 756.6105 19.62710 18.85049 13.4865574 43.06798 56.81290 48.21290 32.93202 90.716429 2.6515227 2.5869124 2.8190946 15.007765 5.7275224 4.0282300 5.4622739
1919062 2004 31.00000 109.00000 316.0000 7955.000 228.0000 -117.0000000 346.0000 93.00000 -63.000000 150.0000 -73.000000 441.0000 78.00000 20.00000 44.00000 217.0000 66.00000 117.00000 76.00000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1131.0000 27.80000 12.00000 21.2000000 48.20000 58.60000 36.40000 51.60000 35.454196 0.8366600 0.7071068 2.9495762 2.167948 0.5477226 0.5477226 1.1401754
439645 16 84.00000 24.00000 127.0000 5801.000 183.0000 -4.0000000 187.0000 108.00000 49.000000 167.0000 9.000000 699.0000 83.00000 38.00000 24.00000 239.0000 119.00000 198.00000 132.00000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 710.7500 20.37500 11.87500 7.2500000 125.00000 51.75000 20.12500 68.00000 42.811047 0.7440238 0.8345230 0.8864053 14.362650 0.8864053 0.8345230 0.7559289

The procedure used to obtain these environmental predictors is described here (Click to download the report)

Bioclimatic variables (bio01-bio19) derive from CHELSA

Codes:

Bio1 = Annual Mean Temperature
Bio2 = Mean Diurnal Range
Bio3 = Isothermality
Bio4 = Temperature Seasonality
Bio5 = Max Temperature of Warmest Month
Bio6 = Min Temperature of Coldest Month
Bio7 = Temperature Annual Range
Bio8 = Mean Temperature of Wettest Quarter
Bio9 = Mean Temperature of Driest Quarter
Bio10 = Mean Temperature of Warmest Quarter
Bio11 = Mean Temperature of Coldest Quarter
Bio12 = Annual Precipitation
Bio13 = Precipitation of Wettest Month
Bio14 = Precipitation of Driest Month
Bio15 = Precipitation Seasonality
Bio16 = Precipitation of Wettest Quarter
Bio17 = Precipitation of Driest Quarter
Bio18 = Precipitation of Warmest Quarter
Bio19 = Precipitation of Coldest Quarter

Soil variables (5 cm depth) derive from the ISRIC dataset, downloaded at 250-m resolution

CECSOL Cation Exchange capacity of soil
CLYPPT Clay mass fraction in %
CRFVOL Coarse fragments volumetric in %
ORCDRC Soil Organic Carbon Content in g/kg
PHIHOX Soil pH x 10 in H20
SLTPPT Silt mass fraction in %
SNDPPT Sand mass fraction in %
BLDFIE Bulk Density (fine earth) in kg/m3
P.ret.cat Phosphorous Retention - Categorical value, see ISRIC 2011-06

5 Export & SessionInfo

save( woody_species_traits, DT.xylem, CWM.xylem, header.xylem, soilclim.xylem,
      file="_derived/Xylem_sPlot.RData" )
sessionInfo()
## R version 3.6.3 (2020-02-29)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 16.04.7 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/openblas-base/libblas.so.3
## LAPACK: /usr/lib/libopenblasp-r0.2.18.so
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8          LC_NUMERIC=C                  LC_TIME=en_US.UTF-8          
##  [4] LC_COLLATE=en_US.UTF-8        LC_MONETARY=en_US.UTF-8       LC_MESSAGES=en_US.UTF-8      
##  [7] LC_PAPER=en_US.UTF-8          LC_NAME=en_US.UTF-8           LC_ADDRESS=en_US.UTF-8       
## [10] LC_TELEPHONE=en_US.UTF-8      LC_MEASUREMENT=en_US.UTF-8    LC_IDENTIFICATION=en_US.UTF-8
## 
## attached base packages:
## [1] grid      stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] downloader_0.4      gridExtra_2.3       dggridR_2.0.3       rnaturalearth_0.2.0 sf_0.9-3           
##  [6] elevatr_0.2.0       rworldmap_1.3-6     raster_3.0-7        rgeos_0.5-5         rgdal_1.5-18       
## [11] sp_1.4-4            kableExtra_1.3.1    knitr_1.30          xlsx_0.6.5          viridis_0.5.1      
## [16] viridisLite_0.3.0   forcats_0.5.0       stringr_1.4.0       dplyr_1.0.2         purrr_0.3.4        
## [21] readr_1.4.0         tidyr_1.1.2         tibble_3.0.1        ggplot2_3.3.0       tidyverse_1.3.0    
## 
## loaded via a namespace (and not attached):
##  [1] colorspace_2.0-0     ellipsis_0.3.1       class_7.3-17         fs_1.5.0             rstudioapi_0.13     
##  [6] farver_2.0.3         prodlim_2019.11.13   fansi_0.4.1          lubridate_1.7.9.2    xml2_1.3.2          
## [11] codetools_0.2-18     splines_3.6.3        spam_2.5-1           jsonlite_1.7.1       caret_6.0-84        
## [16] rJava_0.9-13         broom_0.7.0          dbplyr_2.0.0         compiler_3.6.3       httr_1.4.2          
## [21] backports_1.2.0      assertthat_0.2.1     Matrix_1.2-18        cli_2.2.0            htmltools_0.5.0     
## [26] tools_3.6.3          dotCall64_1.0-0      gtable_0.3.0         glue_1.4.2           reshape2_1.4.4      
## [31] maps_3.3.0           Rcpp_1.0.5           cellranger_1.1.0     vctrs_0.3.5          nlme_3.1-150        
## [36] iterators_1.0.13     timeDate_3043.102    xfun_0.19            gower_0.2.2          xlsxjars_0.6.1      
## [41] rvest_0.3.6          lifecycle_0.2.0      MASS_7.3-53          scales_1.1.1         ipred_0.9-9         
## [46] hms_0.5.3            fields_11.6          yaml_2.2.1           rpart_4.1-15         stringi_1.5.3       
## [51] highr_0.8            maptools_1.0-2       foreach_1.5.1        e1071_1.7-4          lava_1.6.8.1        
## [56] rlang_0.4.9          pkgconfig_2.0.3      evaluate_0.14        lattice_0.20-41      recipes_0.1.15      
## [61] labeling_0.4.2       tidyselect_1.1.0     plyr_1.8.6           magrittr_2.0.1       R6_2.5.0            
## [66] generics_0.1.0       DBI_1.1.0            pillar_1.4.3         haven_2.3.1          foreign_0.8-76      
## [71] withr_2.3.0          units_0.6-7          survival_3.2-7       nnet_7.3-14          modelr_0.1.6        
## [76] crayon_1.3.4         KernSmooth_2.23-18   utf8_1.1.4           rworldxtra_1.01      rmarkdown_2.5       
## [81] readxl_1.3.1         data.table_1.13.2    ModelMetrics_1.2.2.2 reprex_0.3.0         digest_0.6.25       
## [86] classInt_0.4-3       webshot_0.5.2        stats4_3.6.3         munsell_0.5.0