View source: R/extract_helpers.R
shrink_by_hour | R Documentation |
FVCOM predictions are resolved hourly. For predictions at non-integer hours, expand_by_hour
expands a dataframe with non-integer hours to include both surrounding integer hours, the predictions of which can be obtained with extract
. This function is designed to 'shrink' the expanded dataframe back down to its original size by interpolating predictions between hours to generate a single prediction for each original timestamp.
shrink_by_hour(dat, verbose = TRUE)
dat |
A dataframe that contains FVCOM predictions (see |
verbose |
A logical input that defines whether or not to print messages to the console to monitor function progress. |
The function returns a dataframe, as inputted, but in which any predictions for non-integer hours have been interpolated from the predictions derived at the two surrounding hours. The 'hour' and 'index_hour' columns are dropped to avoid confusion.
Edward Lavender & Janneke Ransijn
interp_btw_hours
linearly interpolates predictions between hours.
#### Step (1): Define a dataframe that defines the FVCOM predictions required # Times, including non integer hours timestamp <- as.POSIXct(c("2016-03-01 00:00:00", "2016-03-02 00:02:00", "2016-03-01 00:00:00")) dat <- data.frame(timestamp = timestamp) # Define columns required to extract FVCOM predictions (see fvcom.tbx::extract()) dat$hour_dbl <- lubridate::hour(dat$timestamp) + lubridate::minute(dat$timestamp)/60 + lubridate::second(dat$timestamp)/3600 dat$date_name <- date_name(dat$timestamp) dat$mesh_ID <- as.numeric(as.character(dat_mesh_around_nodes$ID))[1] # Examine dat dat #### Step (2): Implement expand_by_hour() # ... to define integer hours at which to extract predictions dat_exp <- expand_by_hour(dat) # Examine dat_exp dat_exp #### Step (3): Extract predictions # Define matches (see ?fvcom.tbx::extract) match_hour <- data.frame(hour = 0:1, index = 1:2) match_mesh <- data.frame(mesh = dat_nodexy$node_id, index = 1:length(dat_nodexy$node_id)) # Define path path <- system.file("WeStCOMS_files/tidal_elevation", package = "fvcom.tbx", mustWork = TRUE) path <- paste0(path, "/") # Extract predictions dat_with_wc <- extract(dat = dat_exp, match_hour = match_hour, match_mesh = match_mesh, dir2load = path) # Examine dat_with_wc dat_with_wc #### Step (4): Implement shrink_by_hour() to interpolate predictions dat_with_wc_interp <- shrink_by_hour(dat = dat_with_wc) # Examine interpolated dataframe dat_with_wc_interp # Check interpolated value with interp_btw_hours() interp_btw_hours(x = dat_with_wc$hour_dbl[2], h1 = dat_with_wc$hour[2], h2 = dat_with_wc$hour[3], p1 = dat_with_wc$wc[2], p2 = dat_with_wc$wc[3] )
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.