## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----load-package-------------------------------------------------------------
library(Rfactor)

## ----create-example-----------------------------------------------------------
event_1_time <- seq(
  from = as.POSIXct(
    "2025-07-01 12:00:00",
    tz = "UTC"
  ),
  by = "1 min",
  length.out = 30
)

event_2_time <- seq(
  from = as.POSIXct(
    "2025-08-01 12:00:00",
    tz = "UTC"
  ),
  by = "1 min",
  length.out = 30
)

example_rainfall <- data.frame(
  datetime = format(
    c(
      event_1_time,
      event_2_time
    ),
    "%Y-%m-%d %H:%M:%S",
    tz = "UTC"
  ),
  precip_mm = c(
    rep(1.0, 30),
    rep(0.1, 30)
  )
)

example_file <- tempfile(
  fileext = ".csv"
)

utils::write.csv(
  example_rainfall,
  example_file,
  row.names = FALSE
)

## ----read-rainfall------------------------------------------------------------
rain <- rf_read_rainfall(
  example_file,
  datetime_col = "datetime",
  precip_col = "precip_mm",
  tz = "UTC",
  expected_interval_min = 1
)

head(rain)

## ----settings-----------------------------------------------------------------
settings <- rf_settings()

settings

## ----identify-events----------------------------------------------------------
storms <- rf_identify_storms(
  rain,
  settings = settings
)

unique(
  storms$storm_id
)

## ----calculate-ei30-----------------------------------------------------------
events <- rf_calculate_ei30(
  storms
)

events[
  ,
  c(
    "storm_id",
    "event_start",
    "event_end",
    "duration_min",
    "precip_mm",
    "i15_mm_h",
    "i30_mm_h",
    "energy_mj_ha",
    "ei30",
    "omitted",
    "erosive"
  )
]

## ----monthly------------------------------------------------------------------
monthly <- rf_calculate_rfactor(
  events,
  period = "monthly"
)

monthly

## ----yearly-------------------------------------------------------------------
yearly <- rf_calculate_rfactor(
  events,
  period = "yearly"
)

yearly

## ----mean-annual-rfactor------------------------------------------------------
yearly_multi_year <- data.frame(
  year = 2020:2024,
  R = c(
    800,
    900,
    NA,
    700,
    0
  )
)

annual_mean <- rf_calculate_mean_rfactor(
  yearly_multi_year,
  period = "yearly"
)

annual_mean

## ----mean-monthly-rfactor-----------------------------------------------------
monthly_multi_year <- data.frame(
  year = c(
    2020,
    2021,
    2022,
    2020,
    2021,
    2022
  ),
  month = c(
    7,
    7,
    7,
    8,
    8,
    8
  ),
  R = c(
    400,
    500,
    300,
    0,
    NA,
    20
  )
)

monthly_mean <- rf_calculate_mean_rfactor(
  monthly_multi_year,
  period = "monthly"
)

monthly_mean

## ----include-all--------------------------------------------------------------
include_all <- rf_settings(
  omit_precip = FALSE,
  omit_intensity = FALSE
)

all_storms <- rf_identify_storms(
  rain,
  settings = include_all
)

all_events <- rf_calculate_ei30(
  all_storms
)

all_events[
  ,
  c(
    "event_start",
    "precip_mm",
    "omitted",
    "erosive"
  )
]

## ----energy-equation----------------------------------------------------------
mcgregor_settings <- rf_settings(
  energy_equation = "mcgregor_1995"
)

mcgregor_settings$energy_equation

## ----ten-minute-settings------------------------------------------------------
settings_10min <- rf_settings(
  intensity_durations_min = c(
    10,
    20,
    30,
    60
  ),
  omit_intensity_duration_min = 10
)

settings_10min

