#' Soil Stability Indicator Calculations
#' @param soil_stability_tall Dataframe Gathered soil stability data
#' @param all Logical. When \code{TRUE} Calculate soil stability for all samples. Defaults to \code{TRUE}
#' @param cover Logical. When \code{TRUE}, calculates soil stability for samples covered byperennial vegetation. Defaults to \code{TRUE}
#' @param uncovered. Logical. When \code{TRUE}, calculates soil stability for samples not covered by perennial vegetation. Defaults to \code{TRUE}
#' @param all_cover_types Logical. When \code{TRUE}, calculates soil stability for each indidual cover type. Defaults to \code{FALSE}
#' @param tall Logical. Indicates if output is tall/long or wide. Defaults to \code{TRUE}
#' @return Dataframe of calculated soil stability values by plot.
#' @export soil_stability
#' @rdname soil_stability
soil_stability <- function(soil_stability_tall,
all = TRUE,
cover = TRUE,
uncovered = TRUE,
all_cover_types = FALSE,
tall = FALSE) {
soil_stability_rating <- list()
# Remove NA Rating values
# ensure that rating is numeric
soil_stability_tall <- soil_stability_tall %>%
dplyr::filter(!is.na(Rating)) %>%
dplyr::mutate(Rating = as.numeric(Rating))
# Calculate a mean rating for all cover types
if (all == TRUE) {
soil_stability_rating[["all"]] <- soil_stability_tall %>%
dplyr::group_by(PrimaryKey) %>%
dplyr::summarize(rating = mean(Rating)) %>%
dplyr::mutate(Veg = "all") %>%
as.data.frame()
}
# Calculate mean rating for all covered soil samples
if (cover == TRUE) {
soil_stability_rating[["covered"]] <- soil_stability_tall %>%
subset(Veg != "NC") %>%
dplyr::group_by(PrimaryKey) %>%
dplyr::summarize(rating = mean(Rating)) %>%
dplyr::mutate(Veg = "covered") %>%
as.data.frame()
}
# Calculate mean rating for all uncovered soil samples
if (uncovered == TRUE) {
soil_stability_rating[["unconvered"]] <- soil_stability_tall %>%
subset(Veg == "NC") %>%
dplyr::group_by(PrimaryKey) %>%
dplyr::summarize(rating = mean(Rating)) %>%
dplyr::mutate(Veg = "uncovered") %>%
as.data.frame()
}
# Calculate mean rating for all cover types individually
if (all_cover_types == TRUE) {
soil_stability_rating[["all_cover_types"]] <- soil_stability_tall %>%
dplyr::group_by(PrimaryKey, Veg) %>%
dplyr::summarize(rating = mean(Rating)) %>%
as.data.frame()
}
# merge all soil stability rating calculations
soil_stability_rating_all <- do.call("rbind", soil_stability_rating)
# if tall=FALSE spread into a wide format
if (!tall) {
soil_stability_rating_all <- soil_stability_rating_all %>%
tidyr::spread(key = Veg, value = rating)
}
if("all" %in% colnames(soil_stability_rating_all)){
soil_stability_rating_all <- soil_stability_rating_all %>%
dplyr::rename(SoilStability_All = all)
}
if("covered" %in% colnames(soil_stability_rating_all)){
soil_stability_rating_all <- soil_stability_rating_all %>%
dplyr::rename(SoilStability_Protected = covered)
}
if("uncovered" %in% colnames(soil_stability_rating_all)){
soil_stability_rating_all <- soil_stability_rating_all %>%
dplyr::rename(SoilStability_Unprotected = uncovered)
}
return(soil_stability_rating_all)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.