Timestamp: Fri Feb 12 14:53:10 2021
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("LDMC"),
                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 
##               0              48               2              55            7826 
##      shrub/tree            tree            <NA> 
##             133           13458              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 LDMC_mean LDMC_sd SLA_mean SLA_sd PlantHeight_mean PlantHeight_sd Wood.vessel.length_mean WoodFiberLength_mean Wood.vessel.length_sd WoodFiberLength_sd SpecificRootLength_mean
Jacquinia berteroi tree TRUE 7 0.6068226 0.0050626 75.137151 37.1203502 34.31427 8.3742232 0.3446419 0.0028528 6.108332 0.0829405 3.6531295 0.3895233 221.4580 445.8003 42.725289 59.291207 3003.6201
Apeiba glabra tree TRUE 77 0.3199758 0.0330450 2.712123 0.1851051 36.60929 1.7089374 0.3589623 0.0095214 12.605288 1.2698106 24.7906251 1.9175443 279.8547 668.1212 8.014331 20.218002 605.6377
Neillia sinensis shrub FALSE 3 0.5926993 0.0027664 94.205639 1.8109943 46.26364 0.1620881 0.2641895 0.0012615 43.479551 1.4832128 2.2480548 0.1773372 461.5683 720.4274 3.186212 3.637194 7326.9638
Quercus elliptica shrub NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Pouteria sapota tree TRUE 20 0.8797051 0.0155250 8.630274 0.4091952 130.36267 6.7174644 0.3724198 0.0525332 11.974603 3.6644970 30.1308280 3.3030881 568.0689 1524.4625 38.125765 43.050195 816.4618
Persea donnell-smithii tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Phyllocosmus lemaireanus tree TRUE 9 0.7489283 0.0051066 2.749029 0.1314240 37.22218 1.0519461 0.4239405 0.0043576 15.666446 0.4305015 13.5332462 2.8271833 131.4457 562.8178 6.024628 20.736735 2390.6246
Podocarpus sellowii tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Rhus glauca shrub FALSE 8 0.5447551 0.0069201 33.463452 1.3096107 48.70214 1.2038989 0.4353517 0.0027479 10.962755 0.2574422 5.2229207 0.9274676 687.0098 1117.2925 19.465392 30.355732 774.3630
Combretaceae tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Oreopanax mutisianus tree TRUE NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Solanum cassioides shrub NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Salvia pomifera shrub FALSE 1 0.3944145 NA 81.420386 NA 40.11284 NA 0.2533839 NA 17.574238 NA 0.9907737 NA 381.7329 669.7504 NA NA 4586.4271
Chionanthus niloticus tree TRUE 5 0.6792513 0.0054359 114.405087 6.6020259 16.23417 0.4451409 0.3753530 0.0041444 14.099031 0.3611554 9.6276892 1.1932830 361.8375 793.4792 15.191112 28.758518 1105.5418
Dendropemon purpureus shrub NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Beaufortia eriocephala shrub FALSE 3 0.7529955 0.0084565 100.285602 2.8529534 15.15597 0.7082846 0.5084629 0.0037188 2.536811 0.0444546 0.7529156 0.0263646 209.8462 495.2229 5.560825 14.051562 3454.7041
Schrebera alata tree TRUE 11 0.6101907 0.0094704 54.575550 3.4230665 37.53619 1.2366312 0.3839207 0.0069469 14.179933 0.4760351 7.8472522 2.5863396 419.8538 750.2448 22.088685 36.594967 1370.0601
Swietenia mahagoni tree TRUE 17 0.5960834 0.0420328 13.394988 0.6404922 52.92547 1.6532179 0.4609424 0.0057321 12.247084 0.7001265 16.8961763 2.5570541 636.1832 1234.0469 16.430799 23.667010 514.3722
Neea chlorantha tree TRUE 1 0.5809054 NA 18.648445 NA 26.62324 NA 0.2443658 NA 16.505504 NA 5.3024388 NA 366.8526 1149.8319 NA NA 2197.3939
Aristolochia manshuriensis other TRUE 4 0.3329820 0.0030086 37.193903 1.1877140 107.16539 2.6855343 0.2949811 0.0032694 20.330480 0.1147939 13.3164998 1.6241677 729.7970 1545.8073 10.629997 16.435772 1874.8429

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

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: 9 x 2
##   PlotObservationID tot.cover
## *             <dbl>     <dbl>
## 1             85000         1
## 2            756069         1
## 3            881243         1
## 4            982708         1
## 5           1003315         1
## 6           1107374         1
## 7           1375255         1
## 8           1472820         1
## 9           1742450         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 1932594 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 S. 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 A.M. 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 J.S. 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 A.M. 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 Philippe Marchand
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. Gutiérrez
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
1910216 459 142.00000 87.00000 296.0000 7325.000 287.0000 -7.00000 294.0000 81.00000 161.000000 239.0000 41.000000 1664.0000 173.00000 121.00000 10.00000 483.0000 365.0000 440.0000 406.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1193.2500 13.75000 19.750000 20.750000 48.75000 50.50000 31.75000 48.75000 36.280160 0.9574271 0.5000000 0.9574271 2.3629078 0.5773503 0.9574271 0.9574271
1545565 755 106.50810 90.17206 340.3340 5942.322 254.2935 -10.54251 264.8664 91.24089 151.196356 194.3117 30.914980 926.2915 98.97571 47.16194 19.67004 287.0891 173.4494 180.5223 225.7247 17.5308171 0.4688567 1.8732063 62.373309 18.5595057 16.5762488 2.1819759 25.0874468 65.3039384 18.439858 16.6196217 164.92343 17.186113 8.8065811 1.7715446 50.210997 31.707149 31.589380 43.737150 1039.8724 22.84389 22.184973 20.628019 53.14594 66.57221 38.02339 39.82164 139.949084 3.0456224 1.5047230 2.6745388 24.3901287 3.1833859 1.6778614 2.2233448
594863 335 142.00000 55.00000 244.0000 5858.000 262.0000 38.00000 224.0000 121.00000 228.000000 228.0000 68.000000 913.0000 132.00000 30.00000 37.00000 385.0000 116.0000 116.0000 241.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1228.2500 20.00000 28.500000 18.500000 32.00000 71.25000 34.00000 37.25000 9.394147 0.8164966 0.5773503 1.2909944 1.8257419 0.5000000 0.0000000 0.9574271
980285 514 147.00000 48.00000 237.0000 5384.000 261.0000 57.00000 204.0000 86.00000 216.000000 228.0000 79.000000 954.0000 137.00000 18.00000 52.00000 374.0000 60.0000 71.0000 323.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 917.5000 20.25000 21.250000 21.500000 61.00000 61.00000 37.00000 41.50000 33.191364 0.5000000 0.9574271 1.2909944 2.9439203 0.8164966 0.8164966 0.5773503
1296123 NA 76.00000 69.00000 246.0000 7581.000 228.0000 -52.00000 280.0000 176.00000 -25.000000 178.0000 -25.000000 633.0000 84.00000 29.00000 34.00000 240.0000 93.0000 230.0000 93.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 834.0000 14.00000 7.000000 5.000000 43.00000 57.00000 21.00000 72.00000 NA NA NA NA NA NA NA NA
1265190 NA 88.00000 71.00000 252.0000 7622.000 238.0000 -44.00000 282.0000 188.00000 -14.000000 189.0000 -14.000000 533.0000 77.00000 25.00000 39.00000 224.0000 77.0000 203.0000 77.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1068.0000 14.00000 13.000000 8.000000 17.00000 63.00000 45.00000 43.00000 NA NA NA NA NA NA NA NA
1507913 429 132.08722 72.76876 296.3022 5842.996 265.9067 20.28600 245.6105 162.29615 60.677485 218.8580 57.965517 802.9047 87.07708 45.69777 19.23529 251.2170 139.4767 190.5497 161.1744 11.2843198 1.7010512 3.5687121 38.189940 11.2913835 11.2714721 2.8274299 13.8359114 11.0593116 11.544018 11.0218200 121.72981 12.396324 7.9875370 1.2483370 36.703818 23.580815 29.764046 25.648222 1025.2901 21.32826 23.151457 19.485805 47.08264 63.52294 37.37947 39.47060 137.808380 2.6220444 1.9603759 3.0337375 15.1539784 3.8740199 1.8210566 2.6117241
646475 544 95.00000 73.00000 295.0000 6174.000 232.0000 -17.00000 249.0000 30.00000 177.000000 182.0000 14.000000 1311.0000 154.00000 83.00000 20.00000 445.0000 257.0000 277.0000 426.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 585.4000 24.80000 14.800000 19.800000 103.60000 46.80000 32.00000 53.20000 24.562166 0.4472136 0.8366600 1.6431677 2.3021729 0.4472136 2.0000000 2.5884358
45898 516 83.00000 79.00000 282.0000 7115.000 228.0000 -54.00000 282.0000 175.00000 -10.000000 178.0000 -14.000000 1073.0000 123.00000 64.00000 19.00000 357.0000 208.0000 345.0000 248.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 674.8333 26.33333 23.333333 17.166667 65.16667 55.33333 44.16667 32.50000 34.579859 1.6329932 0.5163978 0.9831921 4.7504386 1.8618987 0.7527727 1.0488088
1965914 1880 90.00000 114.00000 293.0000 9130.000 305.0000 -83.00000 388.0000 105.00000 226.000000 226.0000 -31.000000 246.0000 28.00000 11.00000 25.00000 82.0000 35.0000 35.0000 70.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1392.8000 15.40000 14.800000 6.200000 9.20000 81.00000 35.80000 49.40000 5.449771 0.8944272 0.4472136 1.3038405 0.4472136 0.0000000 1.0954451 0.8944272
840883 25 103.00000 66.00000 295.0000 5612.000 227.0000 2.00000 225.0000 177.00000 84.000000 182.0000 29.000000 761.0000 73.00000 47.00000 12.00000 218.0000 152.0000 215.0000 169.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 650.0000 12.33333 11.166667 5.833333 17.00000 63.50000 31.83333 57.16667 18.899735 1.0327956 0.7527727 0.4082483 0.8944272 1.2247449 2.2286020 2.6394444
1930658 140 176.00000 90.00000 319.0000 6976.000 309.0000 27.00000 282.0000 121.00000 197.000000 266.0000 76.000000 1449.0000 173.00000 75.00000 22.00000 487.0000 251.0000 326.0000 430.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1409.6000 16.60000 18.600000 9.600000 28.40000 50.20000 28.60000 52.60000 19.243181 0.5477226 0.5477226 1.1401754 1.3416408 0.4472136 1.5165751 1.6733201
811191 51 97.00000 64.00000 281.0000 5840.000 223.0000 -6.00000 228.0000 173.00000 77.000000 179.0000 20.000000 733.0000 73.00000 46.00000 14.00000 215.0000 150.0000 215.0000 155.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 679.5000 15.00000 9.666667 6.166667 54.66667 57.33333 28.50000 61.66667 38.630299 0.6324555 0.8164966 0.9831921 7.8145164 0.8164966 1.3784049 1.6329932
891935 2 89.65957 45.45745 207.8191 6199.053 208.1702 -10.59574 218.7872 171.05319 8.914894 178.1383 8.914894 576.6915 63.44681 30.71277 20.23404 187.4043 105.1277 181.2128 105.1277 0.4763931 0.6163523 1.9452880 8.373495 0.7709552 0.4933787 0.8279050 0.4721723 0.2805361 0.499485 0.2805361 11.22787 1.169661 0.6659513 0.4256692 3.367521 2.263474 3.534385 2.263474 711.5904 20.27800 13.728745 6.290823 52.25034 63.09379 26.16397 60.08974 137.377690 5.4528525 2.3890584 0.8362383 28.6656213 3.0745808 3.0051897 3.3261861
751762 NA 117.48204 74.00000 310.0945 5769.304 251.9301 12.57467 239.3459 144.01323 67.824197 200.7032 43.223062 744.4877 80.23629 50.77883 12.75992 217.0870 156.0794 192.6711 183.1474 2.0310466 0.0000000 0.3825604 15.061490 2.2158230 1.8866058 0.6595651 16.9136010 2.7201027 2.145469 1.8978051 62.95901 6.811235 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.959008 2.2463988 3.4595559 1.8352642 5.7520812 4.4650441 3.4865659 5.6465916
1804066 282 120.75000 84.00000 247.7500 9286.250 284.7500 -55.75000 340.2500 247.75000 -9.750000 247.7500 -9.750000 1419.0000 330.75000 37.75000 76.75000 859.2500 114.7500 859.2500 114.7500 7.0887234 0.0000000 0.9574271 34.989284 7.0887234 6.6017674 0.9574271 7.0887234 6.6017674 7.088723 6.6017674 73.63423 19.085335 0.9574271 1.5000000 53.952912 2.872281 53.952912 2.872281 1151.4054 17.95946 20.270270 16.162162 49.10811 59.55405 38.98649 40.70270 49.259147 1.1871364 1.2745915 2.2270259 7.4916713 0.9236896 1.5393758 1.9912805
50981 2280 -4.00000 82.00000 302.0000 6504.000 136.0000 -135.00000 271.0000 87.00000 -86.000000 87.0000 -91.000000 850.0000 113.00000 46.00000 33.00000 336.0000 139.0000 336.0000 148.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 722.0000 31.50000 11.333333 22.166667 136.33333 55.33333 37.00000 51.83333 12.312595 1.5165751 1.0327956 1.1690452 13.0639453 0.5163978 1.5491933 0.7527727
67923 NA 110.00000 76.00000 275.0000 7157.000 258.0000 -19.00000 278.0000 88.00000 212.000000 212.0000 17.000000 730.0000 90.00000 37.00000 25.00000 257.0000 117.0000 117.0000 186.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1048.8000 29.00000 28.000000 9.800000 30.80000 63.20000 38.60000 33.20000 22.928149 0.7071068 1.2247449 1.4832397 1.9235384 0.8366600 1.1401754 1.3038405
404743 5 85.00000 32.00000 161.0000 5852.000 191.0000 -7.00000 198.0000 147.00000 9.000000 169.0000 9.000000 557.0000 56.00000 31.00000 18.00000 168.0000 105.0000 166.0000 105.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 799.0000 18.40000 17.800000 6.800000 55.80000 61.80000 26.00000 55.80000 30.886890 1.1401754 0.4472136 0.4472136 13.5351395 0.4472136 2.5495098 2.3874673
1797249 836 71.00000 62.00000 208.0000 8149.000 225.0000 -74.00000 299.0000 171.00000 -33.000000 189.0000 -38.000000 1337.0000 167.00000 68.00000 27.00000 489.0000 207.0000 450.0000 220.0000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 753.6000 34.40000 15.400000 18.400000 184.40000 45.20000 37.80000 47.20000 18.420098 2.1908902 0.8944272 0.8944272 14.8256534 0.4472136 1.0954451 0.4472136

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-23      sf_0.9-3          sp_1.4-5         
##  [5] downloader_0.4    gridExtra_2.3     viridis_0.5.1     viridisLite_0.3.0
##  [9] kableExtra_1.3.1  knitr_1.31        forcats_0.5.1     stringr_1.4.0    
## [13] dplyr_1.0.4       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.2  lattice_0.20-41    class_7.3-18      
##  [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.1    reprex_1.0.0       evaluate_0.14     
## [13] e1071_1.7-4        highr_0.8          httr_1.4.2         pillar_1.4.3      
## [17] rlang_0.4.10       readxl_1.3.1       rstudioapi_0.13    rmarkdown_2.6     
## [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.20          pkgconfig_2.0.3   
## [29] htmltools_0.5.1.1  tidyselect_1.1.0   fansi_0.4.2        crayon_1.4.1      
## [33] dbplyr_2.1.0       withr_2.4.1        jsonlite_1.7.2     gtable_0.3.0      
## [37] lifecycle_0.2.0    DBI_1.1.1          magrittr_2.0.1     units_0.6-7       
## [41] scales_1.1.1       KernSmooth_2.23-18 cli_2.3.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.6        tools_3.6.3        glue_1.4.2        
## [53] maps_3.3.0         hms_1.0.0          yaml_2.2.1         colorspace_2.0-0  
## [57] classInt_0.4-3     rvest_0.3.6        haven_2.3.1