Timestamp: Tue Nov 3 17:35:46 2020
Drafted: Francesco Maria Sabatini
Version: 1.0

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(vegan)
#library(xlsx)
#library(caret)
#library(foreign)
#library(raster)

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 5510382 records, across 1243968 plots.

2 Extract woody species

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

#load list of woody species, as provided to me by Alexander Zizka, within sPlot project #21
load("../Project_21/_input/evowood_species_list.rda")

#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) |
          (species %in% synonyms$name_binomial) |
          grepl(pattern = "tree|shrub", x = GrowthForm) |
          is.tree.or.tall.shrub==T
              ) %>% 
  #counter proof - exclude species NOT herb
  filter(GrowthForm != "herb" | is.na(GrowthForm))

table(woody_species_traits$GrowthForm, exclude=NULL)
## 
##      herb/shrub     herb\\shrub herb/shrub/tree           other           shrub 
##              40               8               2             104            7928 
##      shrub/tree     shrub\\tree            tree            <NA> 
##             105              29           13555             974
# MEMO: some standardization needed in sPlot 3.0
#
# Using data from A.Zizka whhen selecting species
# improves the selection only marginally (from ~21k to ~22k)
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
Lomatia arborescens shrub/tree TRUE 1 0.6451425 NA 49.221294 NA 13.33087 NA 7.401691 NA 6.1951879 NA 446.4706 951.3365 NA NA 3560.3223
Lippia salsa shrub FALSE 2 0.4572493 0.0039409 37.063034 0.1492967 15.40915 0.0472494 14.072125 1.1469204 0.4054587 0.0139486 270.4248 852.4892 9.136197 24.633775 5616.0419
Diospyros virginiana tree TRUE 149 0.6734528 0.0187354 15.862129 2.8517296 102.95699 7.8154457 23.761360 4.4461073 16.2110327 1.6440175 391.1846 1140.1778 23.216326 43.884811 3327.8868
Austromyrtus dulcis shrub FALSE 6 0.7243857 0.0038755 48.747695 1.6030297 23.24232 0.7235997 8.244685 0.1415510 6.9188749 0.3148530 244.3602 587.7412 4.524264 6.633835 2595.2214
Tamarix elongata tree TRUE 3 0.6143633 0.0021182 50.380030 1.4042630 17.21386 0.2520982 7.837221 0.0619457 3.9289278 0.0540944 298.9077 537.9980 4.500825 10.391404 3369.3866
Verticordia forrestii shrub FALSE 1 0.7642140 NA 39.719327 NA 29.76079 NA 4.195660 NA 9.1487785 NA 256.1001 691.8458 NA NA 2131.0993
Vismia latifolia tree TRUE 3 0.4346264 0.0067357 16.088267 0.0245197 58.72700 2.2047453 14.791271 0.0630522 7.1404928 0.2285554 305.4112 790.9108 9.767171 17.599158 11205.4920
Otoba parvifolia tree TRUE 25 0.4316853 0.0277815 7.633695 0.4334815 25.52410 0.9916954 11.153725 1.0988266 29.5658711 2.8799661 343.0778 1134.3688 11.450767 27.931322 1031.1335
Marsdenia verrucosa shrub FALSE 1 0.5874495 NA 24.225719 NA 80.09720 NA 10.303991 NA 5.8325524 NA 364.5006 742.1301 NA NA 2427.5038
Enterolobium barnebianum tree TRUE 2 0.5658304 0.0063182 4.917899 0.2569556 33.23605 1.9370954 11.502964 0.0397907 16.4097715 4.3843928 255.1133 831.3482 6.826579 35.890797 948.8853
Eurya handel-mazzettii tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Eschweilera pseudodecolorans tree TRUE 1 0.7392958 NA 8.634597 NA 92.15079 NA 10.644061 NA 16.3500118 NA 494.6545 1484.3396 NA NA 662.5836
Roucheria laxiflora tree TRUE 1 0.7607442 NA 20.686809 NA 49.86439 NA 9.567348 NA 3.3992403 NA 484.8660 1452.8420 NA NA 3485.5110
Dillwynia tenuifolia shrub FALSE 1 0.6983768 NA 30.587250 NA 27.02294 NA 6.591009 NA 1.3447485 NA 228.4055 609.8847 NA NA 1329.1705
Quercus obtusata tree TRUE 2 0.7445006 0.1006211 38.027957 0.1531836 49.50837 0.3036159 10.510487 0.2590222 12.3970918 0.4961814 330.2405 906.1078 1.439888 27.912641 1796.3838
Eremophila fraseri shrub FALSE 2 0.8073085 0.1115668 48.523792 0.5818303 56.15730 2.8009475 5.550552 0.1917255 3.0663162 0.1295405 639.9068 1598.4164 23.758321 25.766975 1665.2501
Iberis sempervirens shrub FALSE 7 0.3944325 0.0027100 87.504174 2.9056063 25.69286 0.2236782 23.710124 0.1417998 0.2210647 0.0663102 192.4797 501.3084 2.193399 9.501746 15361.7573
Archidendron rufescens tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Dillenia indica tree TRUE 8 0.5936544 0.0556893 21.933328 0.3882042 37.68943 1.9027573 12.387934 0.8965556 26.0851561 1.5404599 255.5344 462.2107 6.162338 13.690789 1042.9387
Euplassa shrub NA 13 0.5104767 0.0539766 27.544875 3.5256873 19.47184 1.0986517 14.602585 3.5753732 11.0497381 1.4307232 403.0059 974.9209 31.366863 43.050829 3748.3931

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] 8567900

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 100
  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) %>%
  summarize(Relative.cover=combine.cover(Relative.cover), .groups="drop") %>%
  ungroup()

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

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::rename(species=Species) %>%
              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.2857143 NA 1 4 0.2500000
5 P50 -1.5003056 0.2857143 NA 1 4 0.2500000
16 Ks 0.1557417 0.9677419 0.0014506 2 7 0.2857143
16 P50 -2.3015323 1.0000000 0.5938076 3 7 0.4285714
17 Ks 0.3915309 1.9138182 0.1519621 5 7 0.7142857
17 P50 -3.2692863 1.9138182 3.5600373 5 7 0.7142857
18 Ks 0.4580143 0.7444444 0.0410046 4 10 0.4000000
18 P50 -3.8911671 3.3333333 5.0350743 8 10 0.8000000
19 Ks 0.7376319 1.0057455 0.1460626 5 14 0.3571429
19 P50 -3.3159887 1.9539273 1.2686962 9 14 0.6428571
20 Ks 0.3050261 0.0526316 0.0160221 2 7 0.2857143
20 P50 -2.7121667 0.5526316 1.0054947 3 7 0.4285714
21 Ks 0.3050261 1.0000000 0.0160221 2 8 0.2500000
21 P50 -3.8529856 1.7755102 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.8214286 0.0210918 2 8 0.2500000
26 P50 -3.8980845 1.1153846 1.2427961 5 8 0.6250000
27 Ks 0.1500000 0.0315789 NA 1 7 0.1428571
27 P50 -4.0094507 0.0526316 5.2985022 2 7 0.2857143
CWM.xylem08 <- CWM.xylem %>%
  filter(trait.coverage>=0.8)
## `summarise()` ungrouping output (override with `.groups` argument)
Number of plots with >=.8 coverage per trait
trait num.plots .group
Ks 314553 drop
P50 529224 drop
#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 99.9944532
TV2 relevé number 100.0000000
ORIG_NUM 0.0047429
GUID 100.0000000
Longitude 100.0000000
Latitude 100.0000000
Location uncertainty (m) 95.2326748
Country 99.9040972
CONTINENT 100.0000000
sBiome 99.2994997
sBiomeID 99.2994997
Ecoregion 99.2824574
EcoregionID 99.2824574
Locality 60.0678635
Relevé area (m²) 72.9285641
Cover abundance scale 100.0000000
Date of recording 87.1815834
Plants recorded 99.9995177
Herbs identified (y/n) 2.7118865
Mosses identified (y/n) 28.1309487
Lichens identified (y/n) 16.5480141
elevation_dem 76.7620228
Altitude (m) 84.2275686
Aspect (°) 32.4671535
Slope (°) 42.1329970
Forest 74.7368903
Shrubland 74.7368903
Grassland 74.7368903
Wetland 74.7368903
Sparse.vegetation 74.7368903
Naturalness 47.8299281
ESY 72.6619977
Cover total (%) 21.1678275
Cover tree layer (%) 17.0949735
Cover shrub layer (%) 18.6166364
Cover herb layer (%) 36.1539847
Cover moss layer (%) 18.1638113
Cover lichen layer (%) 0.3121463
Cover algae layer (%) 0.0567539
Cover litter layer (%) 4.5210166
Cover open water (%) 0.1392319
Cover bare rock (%) 1.7043043
Height (highest) trees (m) 7.5995524
Height lowest trees (m) 0.4962346
Height (highest) shrubs (m) 5.0405637
Height lowest shrubs (m) 0.5556413
Aver. height (high) herbs (cm) 9.5914847
Aver. height lowest herbs (cm) 2.7044104
Maximum height herbs (cm) 2.4628447
Maximum height cryptogams (mm) 0.1219485

The process results in 1243968 plots selected, for a total of 1932998 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 Vassiliy 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 Herault
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 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 Jürgen Dengler
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 Joop H.J. Schaminée
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
NA 69 NA

The data derive from 156 datasets.

4 Extract climate and soils data

soilclim.xylem <- soilclim %>% 
  filter(PlotObservationID %in% plot.sel) %>% 
  rename(Elevation=Elevation_median, -Elevation_q2.5, -Elevation_q97.5)
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). Sd is also reported.
PlotObservationID Elevation Elevation_q2.5 Elevation_q97.5 Elevation_DEM.res 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
1949517 2810 2810 2810 153 64.00000 122.00000 379.0000 7066.000 233.0000 -89.00000 321.0000 158.00000 81.00000 160.0000 -30.00000 598.0000 118.00000 15.00000 60.00000 331.0000 48.00000 208.0000 150.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1075.8000 29.20000 20.800000 18.000000 68.40000 59.80000 38.60000 40.80000 14.41180 0.8366600 0.4472136 0.7071068 5.8137767 0.8366600 0.5477226 0.8366600
666779 NA NA NA NA 117.48204 74.00000 310.0945 5769.304 251.9301 12.57467 239.3459 144.01323 67.82420 200.7032 43.22306 744.4877 80.23629 50.77883 12.75992 217.0870 156.07940 192.6711 183.1474 2.0310466 0.0000000 0.3825604 15.061490 2.2158230 1.8866058 0.6595651 16.9136010 2.7201027 2.1454694 1.8978051 62.959014 6.8112350 4.3447815 0.5814532 18.325859 13.903119 16.499240 16.215669 988.5854 16.25147 20.636278 12.025206 23.63887 62.96561 38.21720 41.12073 92.95901 2.2463988 3.4595559 1.8352642 5.7520812 4.4650441 3.4865659 5.6465916
839747 76 76 76 153 98.00000 66.00000 284.0000 5919.000 226.0000 -7.00000 233.0000 176.00000 20.00000 181.0000 20.00000 769.0000 81.00000 46.00000 14.00000 235.0000 153.00000 227.0000 153.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 818.5000 12.83333 10.833333 6.000000 22.66667 62.50000 32.33333 56.83333 24.01458 0.9831921 0.4082483 0.0000000 0.8164966 1.0488088 0.5163978 0.4082483
1167099 -2 -2 -2 153 103.00000 51.00000 260.0000 5094.000 207.0000 12.00000 195.0000 88.00000 79.00000 176.0000 35.00000 840.0000 86.00000 46.00000 19.00000 256.0000 151.00000 245.0000 175.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 351.8000 31.20000 24.000000 4.800000 167.40000 59.40000 30.20000 45.60000 22.29798 1.0954451 1.5811388 0.4472136 10.1390335 0.5477226 1.0954451 2.3021729
654053 158 158 158 153 111.00000 74.00000 292.0000 6370.000 250.0000 -4.00000 255.0000 172.00000 29.00000 200.0000 27.00000 750.0000 85.00000 44.00000 23.00000 255.0000 133.00000 233.0000 146.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 852.6000 16.60000 18.800000 10.600000 37.60000 57.60000 38.40000 42.80000 28.97067 0.5477226 0.8366600 0.5477226 1.5165751 1.1401754 0.5477226 0.4472136
319486 583 583 583 153 76.00000 76.00000 265.0000 7399.000 226.0000 -58.00000 285.0000 172.00000 11.00000 176.0000 -25.00000 723.0000 89.00000 41.00000 25.00000 253.0000 125.00000 226.0000 148.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 855.0000 21.40000 22.000000 14.000000 42.40000 60.40000 45.80000 32.40000 47.72840 1.1401754 1.0000000 0.7071068 11.4149025 0.5477226 0.8366600 0.5477226
34741 140 140 142 153 107.00000 79.00000 272.0000 7545.000 261.0000 -31.00000 292.0000 204.66667 9.00000 208.0000 3.00000 555.0000 69.66667 31.33333 28.00000 200.3333 94.66667 184.6667 100.3333 0.0000000 0.0000000 0.0000000 2.000000 0.0000000 0.0000000 0.0000000 0.5773503 0.0000000 0.0000000 0.0000000 5.000000 0.5773503 0.5773503 0.0000000 1.527525 1.527525 1.527525 1.527525 1141.7674 22.95349 22.976744 6.511628 24.88372 68.79070 32.95349 43.95349 51.53078 1.7586993 1.9938999 0.6680495 1.8671254 1.8068407 2.3599182 3.9154972
1661863 NA NA NA NA 141.22535 86.85312 309.7364 6645.231 294.9718 14.55332 280.3924 117.43461 230.11066 238.3763 56.41650 685.6036 88.26358 30.04829 27.46278 253.0584 104.14889 122.6237 166.4145 7.6047471 0.8427557 1.3607923 32.732432 7.7915905 7.4146810 1.6378161 7.4466009 7.8633636 7.8361034 7.3912526 74.279427 8.7897107 4.2985465 2.4836406 24.973910 16.705284 18.180360 19.988435 1224.4096 22.73415 28.579681 14.798945 24.71179 72.35150 40.10536 31.33518 120.15481 1.7616083 2.3264205 1.8513969 7.3508237 3.5478420 2.0707349 3.4727637
1059148 11 8 15 153 103.00000 65.00000 296.6667 5446.833 223.6667 4.00000 219.1667 49.83333 83.00000 180.0000 31.00000 785.6667 76.33333 46.66667 12.33333 224.6667 155.83333 210.8333 175.5000 0.0000000 0.0000000 0.5163978 2.316607 0.5163978 0.0000000 0.4082483 0.4082483 0.0000000 0.0000000 0.0000000 5.537749 0.5163978 0.5163978 0.5163978 1.032796 1.471960 1.471960 1.643168 403.9787 11.77660 4.904255 5.042553 29.47872 53.64894 13.72340 81.32979 34.10420 1.0176322 1.5455044 0.6544290 3.6092138 1.3496909 1.7314563 2.9270275
1469065 134 134 134 153 108.00000 80.00000 272.0000 7625.000 264.0000 -32.00000 296.0000 207.00000 9.00000 210.0000 3.00000 592.0000 71.00000 34.00000 25.00000 207.0000 104.00000 194.0000 112.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1205.8333 25.33333 23.000000 7.000000 25.50000 75.16667 39.50000 37.00000 18.92529 0.8164966 0.6324555 0.0000000 0.5477226 0.4082483 0.5477226 0.6324555
715005 70 70 70 153 152.00000 57.00000 260.0000 5574.000 274.0000 54.00000 219.0000 176.00000 227.00000 235.0000 82.00000 557.0000 90.00000 15.00000 39.00000 226.0000 56.00000 75.0000 158.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1288.1667 20.83333 27.333333 18.000000 29.33333 72.33333 36.00000 36.66667 24.01180 0.4082483 0.8164966 1.4142136 3.4448028 0.5163978 1.5491933 1.2110601
290933 857 857 857 153 62.00000 75.00000 278.0000 6903.000 204.0000 -65.00000 269.0000 152.00000 80.00000 156.0000 -30.00000 900.0000 101.00000 56.00000 21.00000 301.0000 180.00000 295.0000 221.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 674.6667 21.50000 16.500000 14.333333 64.00000 53.00000 39.50000 43.83333 129.47381 1.7606817 0.8366600 0.8164966 7.6157731 2.8284271 1.3784049 2.3166067
783594 73 53 94 153 94.76042 68.00000 271.0000 6537.792 232.1146 -17.37500 249.2917 185.76042 9.59375 185.7604 9.59375 536.0312 61.28125 32.39583 21.01042 175.9167 102.32292 175.9167 102.3229 0.7913319 0.0000000 0.0000000 4.737125 0.7659846 0.8239826 0.4569157 0.8302795 0.7891118 0.8302795 0.7891118 13.104803 1.5471748 0.9000487 0.5128823 4.354469 2.815352 4.354469 2.815352 765.0408 14.08744 5.782380 6.330046 44.14135 51.94543 17.73636 76.40237 102.96033 2.1796563 2.1224005 1.0215819 14.1320513 5.5395985 4.7011532 6.2167934
671367 NA NA NA NA 117.48204 74.00000 310.0945 5769.304 251.9301 12.57467 239.3459 144.01323 67.82420 200.7032 43.22306 744.4877 80.23629 50.77883 12.75992 217.0870 156.07940 192.6711 183.1474 2.0310466 0.0000000 0.3825604 15.061490 2.2158230 1.8866058 0.6595651 16.9136010 2.7201027 2.1454694 1.8978051 62.959014 6.8112350 4.3447815 0.5814532 18.325859 13.903119 16.499240 16.215669 988.5854 16.25147 20.636278 12.025206 23.63887 62.96561 38.21720 41.12073 92.95901 2.2463988 3.4595559 1.8352642 5.7520812 4.4650441 3.4865659 5.6465916
294468 270 270 271 153 87.00000 74.00000 276.0000 6987.000 231.0000 -39.00000 269.0000 182.00000 -5.00000 182.0000 -6.00000 630.0000 74.00000 36.00000 24.00000 219.0000 113.00000 219.0000 132.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 722.5000 19.50000 17.000000 14.000000 106.50000 52.50000 36.00000 47.00000 34.64823 2.1213203 1.4142136 1.4142136 12.0208153 0.7071068 1.4142136 1.4142136
689060 1021 1021 1021 153 74.00000 76.00000 313.0000 5787.000 211.0000 -33.00000 244.0000 86.00000 23.00000 158.0000 0.00000 1041.0000 119.00000 65.00000 16.00000 319.0000 203.00000 269.0000 241.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 529.4000 30.20000 26.600000 20.200000 88.20000 52.60000 33.20000 40.00000 56.30542 0.4472136 2.1908902 2.1679483 6.0580525 1.1401754 0.8366600 1.5811388
843766 64 64 64 153 99.00000 66.00000 291.0000 5688.000 223.0000 -3.00000 226.0000 173.00000 79.00000 178.0000 24.00000 808.0000 80.00000 50.00000 13.00000 230.0000 163.00000 224.0000 177.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 507.1667 14.83333 10.333333 5.000000 46.16667 56.50000 23.00000 66.66667 43.65051 1.4719601 1.8618987 0.0000000 9.4533945 0.8366600 1.4142136 2.8047579
733052 192 192 192 153 114.00000 74.00000 309.0000 5822.000 248.0000 8.00000 240.0000 53.00000 93.00000 197.0000 38.00000 783.0000 82.00000 55.00000 12.00000 236.0000 170.00000 187.0000 220.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1025.6667 20.50000 29.833333 18.333333 24.83333 73.00000 48.66667 21.66667 16.54892 0.8366600 1.1690452 1.0327956 1.4719601 0.6324555 0.5163978 1.0327956
1376813 1021 912 1112 153 59.50000 82.00000 263.5000 8114.000 218.0000 -93.50000 311.5000 164.50000 -47.50000 167.0000 -50.50000 922.5000 136.00000 44.50000 43.50000 405.0000 134.50000 349.5000 143.5000 6.3639610 0.0000000 0.7071068 38.183766 7.0710678 6.3639610 0.7071068 7.7781746 6.3639610 7.0710678 6.3639610 40.305087 5.6568542 2.1213203 0.7071068 15.556349 6.363961 12.020815 6.363961 693.8571 33.38095 23.285714 14.857143 92.42857 52.76190 46.66667 29.85714 23.58662 1.4654757 0.6436503 0.8535640 12.4119758 1.1359913 1.3165612 1.1526367
374525 9 9 9 153 86.00000 34.00000 184.0000 5337.000 184.0000 0.00000 184.0000 73.00000 54.00000 163.0000 16.00000 803.0000 97.00000 41.00000 28.00000 287.0000 134.00000 214.0000 156.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 720.0000 20.16667 18.666667 10.166667 57.00000 59.33333 28.16667 53.16667 45.76899 2.1369761 1.6329932 1.3291601 12.3612297 1.6329932 1.4719601 3.0605010

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, 
      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              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] grid      stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] rgeos_0.5-5       rgdal_1.5-17      sf_0.9-3          sp_1.4-4         
##  [5] downloader_0.4    gridExtra_2.3     viridis_0.5.1     viridisLite_0.3.0
##  [9] kableExtra_1.3.1  knitr_1.30        forcats_0.5.0     stringr_1.4.0    
## [13] dplyr_1.0.2       purrr_0.3.4       readr_1.4.0       tidyr_1.1.2      
## [17] tibble_3.0.1      ggplot2_3.3.0     tidyverse_1.3.0  
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.5         lubridate_1.7.9    lattice_0.20-41    class_7.3-17      
##  [5] assertthat_0.2.1   digest_0.6.25      R6_2.5.0           cellranger_1.1.0  
##  [9] backports_1.1.10   reprex_0.3.0       evaluate_0.14      e1071_1.7-3       
## [13] highr_0.8          httr_1.4.2         pillar_1.4.3       rlang_0.4.8       
## [17] readxl_1.3.1       rstudioapi_0.11    blob_1.2.1         rmarkdown_2.5     
## [21] labeling_0.3       webshot_0.5.2      munsell_0.5.0      broom_0.7.0       
## [25] compiler_3.6.3     modelr_0.1.6       xfun_0.19          pkgconfig_2.0.3   
## [29] htmltools_0.5.0    tidyselect_1.1.0   codetools_0.2-17   fansi_0.4.1       
## [33] crayon_1.3.4       dbplyr_1.4.4       withr_2.3.0        jsonlite_1.7.1    
## [37] gtable_0.3.0       lifecycle_0.2.0    DBI_1.1.0          magrittr_1.5      
## [41] units_0.6-7        scales_1.1.1       KernSmooth_2.23-18 cli_2.1.0         
## [45] stringi_1.5.3      farver_2.0.3       fs_1.5.0           xml2_1.3.2        
## [49] ellipsis_0.3.1     generics_0.1.0     vctrs_0.3.4        tools_3.6.3       
## [53] glue_1.4.2         maps_3.3.0         hms_0.5.3          yaml_2.2.1        
## [57] colorspace_1.4-1   classInt_0.4-3     rvest_0.3.6        haven_2.3.1