Raw File
compute_cover.R
################################################################################
#### Project: Lowland plant migrations alpine soil C loss
#### Title:   Function | Basic formatting of relevee data
#### Author:  Tom Walker (thomas.walker@usys.ethz.ch)
#### Date:    26 May 2021
#### ---------------------------------------------------------------------------

compute_cover <- function(raw_relevees){
  ## Filter for 2017 year only ----
  quad_2017 <- lapply(raw_relevees$quadrats, function(x) x %>% filter(year == 2017))
  rele_2017 <- lapply(raw_relevees$relevees, function(x) x %>% filter(year == 2017))
  ## Match quadrants and relevees to collar data ----
  # quadrants
  quad_matched <- lapply(
    quad_2017, 
    semi_join, 
    y = raw_relevees$collars, 
    by = "grid_id"
  )
  # relevees
  rele_matched <- lapply(
    rele_2017,
    semi_join,
    y = raw_relevees$collars, 
    by = "grid_id"
  )
  ## Quantify bare ground and species cover ----
  # bare ground
  quad_bare <- lapply(
    quad_matched, 
    function(x){
      x %>%
        filter(quadrant_fail != "M") %>%
        group_by(grid_id) %>%
        summarize(total_cover = sum(cover_cm2_bare_soil, na.rm = T)) %>%
        ungroup %>% 
        as.data.frame %>%
        mutate(species = "bare ground")
    }
  )
  # species covers
  rele_sum <- lapply(
    rele_matched, 
    function(x){
      x %>%
        group_by(grid_id, species) %>%
        summarize(total_cover = sum(cover_cm2, na.rm = T)) %>%
        ungroup %>% 
        as.data.frame
    }
  )
  ## Format output ----
  # unlist to data frames
  bare_long <- do.call(rbind, quad_bare)
  rele_long <- do.call(rbind, rele_sum)
  all_long <- rbind(bare_long, rele_long)
  # identify site information
  hilo_id <- substr(all_long$grid_id, 1, 3)
  calanda <- hilo_id %in% c("Cal", "Nes")
  # combine, add site_id, rearrange
  all_out <- all_long %>%
    mutate(site = if_else(calanda, "calanda", "lavey")) %>%
    arrange(grid_id, species) %>%
    remove_rownames
  # return
  return(all_out)
}
back to top