Timestamp: Fri Nov 13 17:37:07 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 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

#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/shrub     herb\\shrub herb/shrub/tree           other           shrub 
##              40               8               2              58            7928 
##      shrub/tree     shrub\\tree            tree            <NA> 
##             105              29           13555              92
#
# 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
Kunzea ericifolia shrub FALSE 1 0.7283649 NA 61.990281 NA 31.98463 NA 10.605079 NA 0.5061563 NA 195.2870 543.5571 NA NA 3554.2440
Epacris paludosa shrub FALSE 1 0.6180130 NA 188.437623 NA 15.30076 NA 8.228136 NA 0.6297734 NA 368.1810 686.6200 NA NA 1615.6063
Codia jaffrei tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Mortoniella pittieri tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Trophis tree TRUE 160 0.5799697 0.0778658 9.840891 1.1314241 50.44614 11.1199527 21.133250 6.0488715 15.1032393 3.8993275 327.6145 801.9136 30.6755155 50.3768197 1720.2909
Planchonella glauca tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Cotyledon velutina shrub FALSE 1 0.3137810 NA 620.284468 NA 21.22847 NA 16.053577 NA 1.1066924 NA 450.2601 512.9229 NA NA 2530.9735
Mitrephora teysmannii tree TRUE 3 0.7483330 0.0090990 20.357402 0.5531617 94.16796 3.9737192 19.631506 0.5069761 12.5924995 0.5909462 493.0227 1171.1943 14.5568411 17.6612858 1268.6842
Neisosperma mianum tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Oxandra tree TRUE 508 0.7439664 0.0279287 46.542459 11.2841074 66.58668 3.3169535 11.912526 1.9821599 14.3297582 2.5364250 489.8337 1049.0371 25.3409824 46.4265455 1158.0969
Rhus typhina tree TRUE 61 0.4527526 0.0069034 53.477904 5.7865638 90.87015 6.9805694 16.845202 4.3542703 6.3294372 2.1204912 1441.3973 1983.9657 110.9144264 116.2715236 757.1311
Abies nephrolepis tree TRUE 27 0.3512129 0.0114178 407.180257 33.9504526 13.67868 0.4732980 9.892645 1.5514761 33.9981397 5.3546088 712.9564 1296.2292 35.6846481 38.7653154 2597.8812
Iryanthera tree TRUE 872 0.5788963 0.0214108 11.691323 2.6742994 69.60219 10.3527934 11.394669 1.7863227 18.2076192 2.6997193 615.3043 1615.3044 38.6066697 102.6116320 1203.0586
Licaria pucheri tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Ficus palmata shrub TRUE 3 0.4166359 0.0059615 17.196187 5.9575747 43.09359 1.5349340 18.205922 0.4136751 11.8499790 0.4458733 298.8537 572.8625 11.1446281 10.4592304 1377.5573
Santalum paniculatum tree TRUE 2 0.7417319 0.0000636 19.537087 0.9933779 24.31650 0.0772736 5.509882 0.0290659 4.9944134 0.0294042 240.6449 616.3328 0.0361808 0.9732207 554.3731
Diospyros cinnabarina tree TRUE 2 0.6610894 0.0035850 14.580362 0.9772326 55.77311 1.9367853 11.881875 0.1371734 10.9291313 0.7287004 431.2067 1151.1902 12.7213760 14.2037536 1452.2787
Protium altsonii tree TRUE 39 0.6128564 0.0255524 12.230485 0.9091390 43.51911 2.2129142 14.697606 2.1798936 20.4438840 1.7465118 404.9270 971.3543 13.3303058 26.8407913 765.7623
Litsea glutinosa tree TRUE 6 0.5487119 0.0540633 15.661711 0.3416939 22.81439 0.7334361 13.030198 0.3315966 14.1280203 0.4921995 454.1707 811.2948 11.0344099 7.2770561 534.8413
Anabasis elatior shrub FALSE 1 0.5692733 NA 60.585659 NA 33.58964 NA 4.135293 NA 0.2021352 NA 488.6956 1010.9334 NA NA 2705.0498

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

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

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: 5 x 2
##   PlotObservationID tot.cover
##               <dbl>     <dbl>
## 1            143374         1
## 2            451004         1
## 3            685954         1
## 4            746410         1
## 5           1133820         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::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.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 92391
P50 328855
#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 1932708 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 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
NA 69 NA

The data derive from 156 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
1055814 0 104.00000 60.00000 288.0000 5231.667 217.0000 8.166667 208.3333 54.00000 82.000000 178.0000 34.000000 814.1667 79.00000 47.00000 15.83333 234.3333 154.00000 231.0000 174.0000 0.000000 0.0000000 0.0000000 3.265986 0.0000000 0.4082483 0.5163978 0.0000000 0.000000 0.0000000 0.0000000 0.9831921 0.0000000 0.0000000 0.4082483 0.8164966 0.000000 0.000000 0.000000 500.9677 26.01613 29.258064 6.806452 64.22581 65.66129 37.290323 33.54839 44.646505 4.0265184 3.6839727 1.4467455 26.123552 1.6980563 2.5310342 3.4720307
14866 509 83.96739 77.72826 276.5435 7176.413 230.1304 -50.184783 280.4348 176.94565 -9.423913 180.4239 -13.391304 640.8913 87.08696 32.33696 36.25000 259.3696 99.84783 233.3370 108.9022 8.772398 0.4472937 1.1617819 46.601927 9.2916332 8.0122562 1.2692851 9.3083492 8.164832 9.2275670 8.1158596 87.2503606 12.0745415 4.5241165 1.8905491 36.3274840 14.101621 32.983938 15.855155 799.4233 20.34871 17.803935 18.152646 49.68385 53.77001 41.138399 41.04071 77.252901 2.9640025 2.3305197 1.8310616 15.822520 3.9467806 2.0002998 3.2557389
859556 NA 92.00000 66.00000 278.0000 6061.000 222.0000 -15.000000 236.0000 171.00000 35.000000 177.0000 12.000000 758.0000 76.00000 50.00000 13.00000 221.0000 164.00000 213.0000 168.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 673.6000 19.40000 21.600000 12.200000 43.80000 57.80000 55.000000 23.60000 25.822471 1.6733201 0.5477226 0.4472136 11.541230 2.2803509 1.8708287 2.1908902
1605521 107 98.00000 64.00000 328.0000 4570.000 209.0000 13.000000 196.0000 54.00000 41.000000 165.0000 41.000000 634.0000 59.00000 41.00000 9.00000 175.0000 135.00000 169.0000 135.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 917.1667 20.66667 26.333333 13.000000 36.00000 63.50000 39.500000 34.33333 20.778996 1.2110601 1.3662601 0.6324555 2.280351 0.8366600 1.0488088 0.8164966
1316079 NA 59.00000 73.00000 265.0000 7245.000 204.0000 -73.000000 277.0000 153.00000 -36.000000 156.0000 -39.000000 1045.0000 160.00000 48.00000 48.00000 480.0000 149.00000 434.0000 160.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 762.0000 25.00000 18.000000 14.000000 102.00000 52.00000 46.000000 37.00000 NA NA NA NA NA NA NA NA
951628 183 97.27670 38.69660 303.1675 3181.583 167.3617 39.783981 127.5655 68.44903 97.684466 144.5801 58.339806 1440.9320 158.89320 81.16990 22.96359 465.4199 246.85922 335.3762 376.3786 4.773318 1.7585905 6.6904886 36.133848 4.6085486 5.1709873 2.8758710 5.6097607 4.820622 4.5956599 4.9357002 171.3306737 18.7292984 8.3564313 1.1698294 56.6295074 25.623696 41.839826 46.861626 468.7101 23.93448 17.202994 16.852865 149.33999 54.55216 36.391983 46.41243 83.179353 2.7960323 2.4750250 2.5543684 38.508144 2.7762622 2.5714244 3.6287941
1665327 1025 102.75000 69.46875 282.3125 6071.531 237.4375 -8.562500 246.0625 47.90625 191.625000 192.4688 25.343750 854.7188 110.37500 51.03125 25.87500 319.8750 153.68750 153.6875 213.0625 9.801251 0.5070073 1.6932027 29.491370 10.1566362 9.6283771 0.7156094 9.4232361 10.742589 10.3112353 9.4684855 67.8243625 8.7611680 4.4029636 1.4756081 26.1086440 13.294281 13.294281 17.159475 860.7004 28.14372 24.400810 18.368421 49.91498 62.89676 39.336032 36.29757 61.672393 2.3604223 2.6132133 2.2478059 17.741234 2.4683534 1.5693687 3.2293209
1985908 NA 184.00000 71.00000 378.0000 3881.000 292.0000 103.000000 189.0000 136.00000 233.000000 240.0000 135.000000 953.0000 197.00000 9.00000 86.00000 590.0000 30.00000 35.0000 499.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1017.0000 12.00000 16.000000 20.000000 20.00000 60.00000 9.000000 75.00000 NA NA NA NA NA NA NA NA
1803757 687 83.80000 59.60000 186.2000 9002.800 235.4000 -84.800000 320.4000 207.80000 -43.800000 207.8000 -43.800000 1329.2000 254.20000 38.40000 64.80000 736.6000 134.00000 736.6000 134.0000 4.324350 0.5477226 0.4472136 24.488773 4.5607017 3.9623226 0.8944272 4.3243497 3.962323 4.3243497 3.9623226 87.7251389 16.2388423 3.1304952 1.6431677 48.9826500 10.246951 48.982650 10.246951 890.0000 27.71233 16.767123 14.726027 107.89041 54.00000 37.383562 46.06849 34.460525 1.6706573 1.0995018 1.6688342 12.763404 0.9279607 1.4398123 1.1344206
490220 33 85.00000 26.00000 136.0000 5928.000 187.0000 -7.000000 194.0000 170.00000 18.000000 170.0000 7.000000 588.0000 60.00000 31.00000 20.00000 178.0000 107.00000 178.0000 108.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 629.7143 20.71429 10.142857 6.000000 107.00000 50.00000 21.571429 68.14286 44.865407 0.4879500 0.8997354 0.5773503 7.461010 2.0000000 0.9759001 1.4638501
1796030 382 115.00000 49.00000 173.0000 8093.000 266.0000 -17.000000 283.0000 50.00000 123.000000 234.0000 7.000000 1920.0000 239.00000 90.00000 29.00000 690.0000 273.00000 528.0000 479.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 893.0000 30.75000 25.000000 16.750000 137.50000 52.25000 36.750000 38.75000 12.884099 0.5000000 0.0000000 0.9574271 5.259911 0.9574271 0.5000000 0.5000000
998764 50 190.00000 29.00000 162.0000 5140.000 286.0000 109.000000 177.0000 187.00000 253.000000 267.0000 125.000000 415.0000 83.00000 1.00000 76.00000 201.0000 5.00000 15.0000 133.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1321.1667 23.58333 32.833333 10.666667 18.75000 77.83333 39.166667 28.00000 41.908631 1.0836247 1.1146409 0.7784989 1.422226 0.7177406 0.8348471 0.9534626
1203804 27 99.00000 62.00000 287.0000 5399.000 215.0000 1.000000 214.0000 175.00000 77.000000 175.0000 27.000000 802.0000 79.00000 48.00000 15.00000 231.0000 155.00000 231.0000 169.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 432.8333 19.00000 2.166667 5.500000 79.83333 44.16667 9.666667 88.16667 59.334363 1.4142136 0.4082483 0.5477226 10.048217 0.7527727 0.8164966 0.9831921
775535 NA 97.00000 36.65556 198.7667 5202.522 195.7222 10.944444 184.8667 156.55556 69.000000 172.1111 28.055556 771.8111 80.72222 41.41111 22.55556 240.1556 133.45556 233.9222 147.4889 0.000000 0.7667399 3.1159250 14.984807 0.5614543 0.2303447 0.6902206 0.4996878 0.000000 0.3160303 0.2303447 7.6465377 0.4747034 0.6852285 0.4996878 1.4371563 1.703672 1.559514 1.921168 781.9368 21.41214 19.503161 11.867257 76.05815 66.99621 32.236410 48.23388 65.897185 3.5719802 2.6851071 3.4668524 22.104222 1.5779287 3.1867589 4.5277949
1947920 NA 95.00000 113.00000 277.0000 9919.000 316.0000 -92.000000 409.0000 125.00000 -25.000000 235.0000 -40.000000 176.0000 22.00000 8.00000 31.00000 62.0000 26.00000 40.0000 26.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1403.2000 19.00000 15.400000 14.800000 11.00000 79.20000 35.600000 48.80000 4.658326 0.7071068 0.8944272 1.7888544 0.000000 0.4472136 0.5477226 0.4472136
1456091 592 69.00000 75.00000 263.0000 7444.000 219.0000 -67.000000 286.0000 166.00000 -28.000000 169.0000 -32.000000 808.0000 99.00000 47.00000 24.00000 281.0000 147.00000 253.0000 174.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 732.3333 21.50000 18.666667 16.000000 45.33333 53.83333 44.666667 36.83333 26.409594 1.7606817 0.8164966 0.6324555 7.840068 0.7527727 0.8164966 1.1690452
466498 84 80.00000 49.00000 236.0000 5644.000 194.0000 -15.000000 209.0000 64.00000 50.000000 161.0000 6.000000 819.0000 91.00000 45.00000 22.00000 271.0000 146.00000 217.0000 166.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 539.1429 11.42857 4.571429 7.428571 64.57143 52.85714 13.857143 81.00000 22.341505 0.7867958 0.5345225 0.5345225 3.552330 0.6900656 1.0690450 1.6329932
910522 34 89.96809 60.78723 257.8085 6233.691 219.3723 -16.382979 235.8298 172.15957 9.500000 177.7340 8.648936 618.7872 68.40426 34.88298 18.46809 201.6596 119.74468 191.5106 119.7872 0.176716 0.4114579 0.8585634 6.864317 0.5676596 0.4887197 0.5799202 0.4930308 4.160102 0.4442108 0.4798621 9.2908469 1.1669199 0.6020821 0.5016559 3.3873680 1.911685 3.130649 1.905692 584.1868 19.19886 9.005682 7.257812 81.09162 56.05043 18.286932 72.61861 91.020105 3.8092692 2.7163924 0.9720376 23.877101 3.5887984 2.6472391 4.3236340
1252128 NA 91.00000 66.00000 262.0000 6703.000 229.0000 -23.000000 252.0000 180.00000 4.000000 184.0000 4.000000 513.0000 61.00000 29.00000 24.00000 182.0000 93.00000 165.0000 93.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 664.0000 24.00000 15.000000 10.000000 95.00000 58.00000 26.000000 59.00000 NA NA NA NA NA NA NA NA
779809 87 89.68977 64.75908 276.5330 6010.749 218.4373 -15.191419 233.5974 171.05776 66.966997 174.1155 10.978548 788.2426 78.61716 49.20792 15.05281 233.3251 158.39274 232.7343 168.6700 1.372502 0.4279976 0.5123918 14.772762 1.3805719 1.3964509 0.5659130 3.2643779 6.024926 1.4164991 1.3586096 61.0301557 6.8021851 3.5795106 0.8235282 19.6866762 10.953133 19.241837 12.760864 573.9951 15.82623 5.616689 7.527284 57.46521 48.99538 22.357928 71.89888 58.083351 2.5895106 2.2557509 1.4731410 17.054369 5.6925041 6.8538879 8.5774418

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              
##  [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-18      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] utf8_1.1.4         assertthat_0.2.1   digest_0.6.25      R6_2.5.0          
##  [9] cellranger_1.1.0   backports_1.2.0    reprex_0.3.0       evaluate_0.14     
## [13] e1071_1.7-4        highr_0.8          httr_1.4.2         pillar_1.4.3      
## [17] rlang_0.4.8        readxl_1.3.1       rstudioapi_0.11    rmarkdown_2.5     
## [21] labeling_0.4.2     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   fansi_0.4.1        crayon_1.3.4      
## [33] dbplyr_2.0.0       withr_2.3.0        jsonlite_1.7.1     gtable_0.3.0      
## [37] lifecycle_0.2.0    DBI_1.1.0          magrittr_1.5       units_0.6-7       
## [41] scales_1.1.1       KernSmooth_2.23-18 cli_2.1.0          stringi_1.5.3     
## [45] farver_2.0.3       fs_1.5.0           xml2_1.3.2         ellipsis_0.3.1    
## [49] generics_0.1.0     vctrs_0.3.4        tools_3.6.3        glue_1.4.2        
## [53] maps_3.3.0         hms_0.5.3          yaml_2.2.1         colorspace_1.4-1  
## [57] classInt_0.4-3     rvest_0.3.6        haven_2.3.1