#' multi.fun
#'
#' Combined function for summary statistics
#'
#' @param x column of values for which to calculate statistics
#' @keywords summary
#' @export
#' @examples
#' multi.fun(x)
multi.fun <- function(x) {
c(min = min(x), mean = mean(x), max = max(x), sd = sd(x))
}
#' Create summary of a graphene curve fit data frame
#'
#' Takes the results of gRdata_read and computes summary statistics
#'
#' @importFrom magrittr %>%
#' @param df Computes summary (min, mean, max and sd) for \code{df}
#' @keywords summary
#' @family curve fit functions
#' @export
#' @examples
#' gr_cf_summary(df_cf)
gr_cf_summary <- function(df) {
df_summary <- df %>%
dplyr::select(-x, -y, -id) %>%
purrr::map(multi.fun) %>%
tibble::as_tibble()
df_summary <- dplyr::bind_cols(dplyr::tibble(key = c('min', 'mean', 'max', 'sd')), df_summary)
df_summary
}
#' Saves summary statistics for graphene curve fit
#'
#' Saves the summary df to a csv file (default name is summary.csv)
#'
#' @importFrom magrittr %>%
#' @param df_summary Dataframe containing summary statistics
#' @param filename Filename of csv file (defaults to summary.csv)
#' @keywords summary
#' @family curve fit functions
#' @export
#' @examples
#' gr_cf_summary_save(df_summary)
gr_cf_summary_save <- function(df_summary, filename = 'summary.csv') {
readr::write_excel_csv(data_summary, filename)
}
#' Calculate average raman spectrum from a full map
#'
#' Calculates the average spectrum from df created by \code{gr_map_read()}
#'
#' @importFrom magrittr %>%
#' @param df_map A tidy dataframe generated by \code{gr_map_read()}
#' @param normalise Logical determining whether spectra are normalised before averaging. Defaults to FALSE.
#' @keywords Average, map, raman, spectrum
#' @export
#' @examples
#' gr_map_avg()
gr_map_avg <- function(df_map, normalise = FALSE) {
df_map_avg <- df_map %>%
dplyr::select(-x, -y) %>%
dplyr::mutate(id = 1:n()) %>%
tidyr::gather(key = wavenumber, value = intensity, convert = TRUE, -id)
if (normalise == TRUE) {
df_map_avg <- df_map_avg %>%
dplyr::group_by(id) %>%
dplyr::mutate(intensity = intensity / max(intensity)) %>%
dplyr::ungroup()
}
df_map_avg %>%
dplyr::group_by(wavenumber) %>%
dplyr::summarise(intensity = mean(intensity))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.