--- title: "AeroEvapR_Tutorial" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{AeroEvapR_Tutorial} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ```{r setup} library(AeroEvapR) ``` ## Introduction The purpose of this tutorial is to help users get started with the `AeroEvapR` package. This package was developed based on the Python package authored by researchers at the Desert Research Institute (DRI) (https://github.com/WSWUP/AeroEvap). ```{r} ## Step 1: Load libraries and data # Load in necessary libraries library(dplyr) library(ggplot2) library(lubridate) library(data.table) library(AeroEvapR) # Read in data file_path <- system.file("extdata", "PadreBay_QAQC_2019_Sep_Oct.csv", package = "AeroEvapR") df <- read.csv(file_path) # View data and column names str(df) ``` ```{r} ## Step 2: Clean up and format the data for the function # Select the variables needed for the calculation old_var_names = c('SkinT_C_Corr_Avg', 'Wind_Speed_ms_Avg', 'BP_kPa_Avg', 'AirT_C_Avg', 'RH_Avg', 'date') # List the new variables that correspond to the function requirements new_var_names <- c('T_skin', 'WS', 'P', 'T_air', 'RH', 'date') # Replace names column names with names required for package setnames(df, old = old_var_names, new = new_var_names) # Convert date to datetime objects df$date <- as.POSIXct(df$date, format = "%m/%d/%Y %H:%M") str(df) ``` ## Run aero_calc ```{r} # This data is 30-minute data. Therefore timestep = 1800 (1800 seconds in 30 minutes) # Run aero_calc evap = suppressWarnings(aero_calc(df=df, sensor_height=2, timestep=1800, out_file_format='csv', out_file_name = 'testing', verbose = FALSE)) ``` ## Plot input variables and output variables ```{r} # View dataframe with new values str(evap) ``` ```{r my-plot, dev = "png", fig.width=7, fig.height=5} # Plot evaporation rate calculated from aero_calc function plot(evap$date,evap$E,type='l',col='cadetblue3', ylab='Evaporation (mm/30-minute)', xlab = 'Date',axes=T) ``` ## Sum 30-minute data to hourly and daily ```{r} # Hourly evap_hourly <- evap %>% mutate(hour = floor_date(date, unit = "hour")) %>% group_by(hour) %>% summarise(across(where(is.numeric), \(x) sum(x, na.rm = TRUE))) # Daily evap_daily <- evap %>% mutate(day = floor_date(date, unit = "day")) %>% group_by(day) %>% summarise(across(where(is.numeric), \(x) sum(x, na.rm = TRUE))) ``` ## Plot 30-minute, hourly, and daily on the same figure ```{r my-plot2, dev = "png", fig.width=7, fig.height=5} old_par <- par(no.readonly = TRUE) on.exit(par(old_par), add = TRUE) par(mfrow = c(3, 1), mar = c(4, 4, 2, 1)) # Plot 30-minute plot(evap$date,evap$E,type='l',col='cadetblue3', ylab='Evap (mm/30-min)', xlab = '',axes=T) # Plot hourly plot(evap_hourly$hour,evap_hourly$E,type='l',col='lightpink', ylab='Evap (mm/hr)', xlab = '',axes=T) # Plot daily plot(evap_daily$day,evap_daily$E,type='l',col='darkgreen', ylab='Evap (mm/day)', xlab = 'Date',axes=T) ```