Timestamp: Fri Nov 13 11:53:06 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(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")
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.
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
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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dillenia eximia | tree | TRUE | 1 | 0.6793376 | NA | 22.639961 | NA | 44.57928 | NA | 10.54365 | NA | 12.4911119 | NA | 299.8186 | 567.8233 | NA | NA | 967.6425 |
Neolitsea australiensis | tree | TRUE | 7 | 0.5792000 | 0.0024933 | 9.506151 | 0.2596111 | 30.23718 | 0.3760617 | 15.80171 | 0.2652343 | 7.9068383 | 0.4256402 | 376.1127 | 844.4782 | 6.503023 | 9.313165 | 1656.2206 |
Phyllanthus welwitschianus | shrub | FALSE | 8 | 0.6753104 | 0.0130232 | 65.281333 | 4.6574508 | 36.61334 | 1.8540340 | 11.23265 | 0.4071654 | 2.0744872 | 0.8694553 | 334.8895 | 657.5239 | 26.904739 | 48.401052 | 4172.6647 |
Platymiscium | tree | TRUE | 183 | 0.7367135 | 0.0570886 | 8.752809 | 0.8330028 | 60.10325 | 5.0651172 | 18.66448 | 6.1165028 | 10.7226177 | 3.1893958 | 492.5852 | 1254.5929 | 40.384016 | 74.824275 | 867.0790 |
Oxandra laurifolia | tree | TRUE | 1 | 0.5884923 | NA | 19.187258 | NA | 89.03682 | NA | 21.26191 | NA | 9.2218572 | NA | 516.4728 | 1013.2987 | NA | NA | 906.8100 |
Flindersia schottiana | tree | TRUE | 45 | 0.5841551 | 0.0097030 | 32.568851 | 1.1659233 | 39.34159 | 1.1731701 | 16.64684 | 4.1421922 | 15.0675958 | 0.6137072 | 814.5528 | 1327.9419 | 18.152491 | 16.305176 | 417.2301 |
Pentas schimperi | shrub | FALSE | 12 | 0.5994127 | 0.0085421 | 101.582042 | 10.6407222 | 37.25850 | 5.5948394 | 16.82194 | 0.3987059 | 1.5952465 | 1.0000603 | 429.1172 | 710.6441 | 85.197367 | 81.569313 | 6680.3624 |
Ditaxis catamarcensis | shrub | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Sideritis pusilla | shrub | FALSE | 1 | 0.4451498 | NA | 63.553638 | NA | 29.81245 | NA | 18.76373 | NA | 0.4582831 | NA | 374.2586 | 544.4329 | NA | NA | 713.5340 |
Erythrina sandwicensis | tree | TRUE | 3 | 0.3473648 | 0.0041953 | 5.449391 | 0.2433384 | 83.52936 | 0.5031719 | 13.11726 | 0.1739220 | 8.4680174 | 0.8741256 | 309.1997 | 1009.0911 | 2.017808 | 20.160225 | 1643.9625 |
Cytisus filipes | shrub | FALSE | 1 | 0.3918256 | NA | 64.145759 | NA | 70.33197 | NA | 17.32879 | NA | 1.4899027 | NA | 557.8850 | 733.0138 | NA | NA | 446.3924 |
Gaultheria phillyreifolia | shrub | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Tilia europaea | tree | TRUE | 4 | 0.4558695 | 0.0190405 | 88.081677 | 5.8414605 | 54.53532 | 0.5138064 | 21.92167 | 0.2783723 | 32.2072947 | 11.1902462 | 332.8352 | 695.6468 | 6.060288 | 17.853047 | 2722.3237 |
Astrocasia peltata | tree | TRUE | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Erythroxylum hondense | shrub | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Duguetia surinamensis | tree | TRUE | 69 | 0.8236290 | 0.0162819 | 24.385029 | 1.2262742 | 134.87025 | 4.7318346 | 13.52768 | 2.3291569 | 16.4117221 | 1.7789890 | 591.9557 | 1289.1331 | 21.840571 | 39.750879 | 789.2354 |
Nolina bigelovii | tree | TRUE | 1 | 0.3974529 | NA | 31.073291 | NA | 17.02055 | NA | 19.86053 | NA | 1.1087419 | NA | 388.3643 | 749.1778 | NA | NA | 2435.8136 |
Drypetes | NA | TRUE | 3 | 0.7221564 | 0.0292078 | 33.585934 | 2.7312624 | 48.57965 | 1.6676046 | 11.35004 | 0.2093386 | 16.9021891 | 5.2380642 | 385.6425 | 1007.3347 | 4.931223 | 32.358909 | 3019.2382 |
Casearia obliqua | tree | TRUE | 18 | 0.6995384 | 0.0270568 | 76.679193 | 1.6766962 | 73.50555 | 1.5930822 | 30.95529 | 2.9574296 | 13.6778866 | 2.5524964 | 368.3871 | 835.8742 | 12.147442 | 21.108464 | 5987.5761 |
Zygia unifoliolata | shrub | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Selected traits are:
Codes correspond to those reported in TRY
#subset DT.xylem to only retain woody species
DT.xylem <- DT.xylem %>%
filter(species %in% (woody_species_traits$species))
nrow(DT.xylem)
## [1] 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
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)
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)
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
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)
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.
soilclim.xylem <- soilclim %>%
filter(PlotObservationID %in% plot.sel) %>%
dplyr::select(Elevation=Elevation_median, -Elevation_q2.5, -Elevation_q97.5, -Elevation_DEM.res)
Elevation |
---|
0 |
509 |
NA |
107 |
NA |
183 |
1025 |
NA |
687 |
33 |
382 |
50 |
27 |
NA |
NA |
592 |
84 |
34 |
NA |
87 |
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
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 codetools_0.2-18 fansi_0.4.1
## [33] crayon_1.3.4 dbplyr_2.0.0 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