We are hiring ! See our job offers.
https://github.com/tom-n-walker/uphill-plants-soil-carbon
Raw File
Tip revision: a9e7a872d22a45dbd91bb00751d522812138eefd authored by Tom Walker on 08 February 2022, 15:18:56 UTC
Additional and revised analysis in response to author comments.
Tip revision: a9e7a87
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)  
}
back to top