https://github.com/tom-n-walker/uphill-plants-soil-carbon
Tip revision: 05e1672664e587a3808d326d6f78d29ca5e44c01 authored by Tom Walker on 07 September 2021, 14:31:53 UTC
Added all analyses, streamlined pipelines and improved statistical models. Removed data export (all done via drake cache).
Added all analyses, streamlined pipelines and improved statistical models. Removed data export (all done via drake cache).
Tip revision: 05e1672
process_try.R
################################################################################
#### Project: Lowland plant migrations alpine soil C loss
#### Title: Function | Process TRY data
#### Author: Tom Walker (thomas.walker@usys.ethz.ch)
#### Date: 27 May 2021
#### ---------------------------------------------------------------------------
process_try <- function(cover_data, full_try){
## Collate my species names ----
# get all species
sppList <- unique(do.call(c, lapply(cover_data$all_cover, colnames)))
# format output
allSpp <- sppList %>%
# split string by period and make data frame
str_split(., "\\.", simplify = T) %>%
as.data.frame %>%
# add original accepted name (changing period for space)
mutate(accepted_name = str_replace_all(sppList, "\\.", " ")) %>%
# rename columns
select(accepted_name, genus = V1, species = V2, subspecies = V3) %>%
# replace empty elements with NA
replace(., . == "", NA)
## Subset and join TRY to my species ----
# match to TRY
sppMatch <- !is.na(match(full_try$accepted_name, allSpp$accepted_name, incomparables = NA))
genMatch <- !is.na(match(full_try$genus, allSpp$genus, incomparables = NA))
# join to species and/or names
sppTraits <- allSpp %>%
left_join(., full_try[sppMatch, ], "accepted_name")
genTraits <- allSpp %>%
left_join(., full_try[sppMatch, ], c("genus" = "accepted_name"))
# add genus-level traits where species traits absent
sppMissing <- is.na(sppTraits$species)
sppTraits[sppMissing, 12:19] <- genTraits[sppMissing, 12:19]
## Format selected trait data ----
# impute, set up data frame and return
imputed <- apply_mice(select(sppTraits, leaf_area:stem_density), 5)
okTraits <- bind_cols(select(sppTraits, accepted_name), imputed)
# identify as lowland or alpine
lowlands <- map(cover_data$focal_cover, colnames) %>%
do.call(c, .) %>%
unique %>%
str_replace_all(., "\\.", " ")
out <- okTraits %>%
mutate(is_focal = ifelse(accepted_name %in% lowlands, "yes", "no")) %>%
# remove leaf P (poor coverage) and SSD (poor coverage; all herbs)
select(accepted_name, is_focal, leaf_area:leaf_N, plant_height:SLA)
return(out)
}