Aguila (Station 07) - AZMET Record High Temperature

Period: 1987–2022 (raw data available only to 1999)

Data source:

Legacy AZMET raw daily files:

https://azmet.arizona.edu/azmet/data/07YYrd.txt

Columns in raw file:

X1 = YEAR2 (2-digit year)

X2 = DOY (day of year)

X3 = STATION_NO

X4 = TMAX_C (max temperature in °C)

Load packages ————————————————————

library(readr) library(dplyr) library(lubridate)

User Inputs —————————————————————

station_number <- “07” # 07 = Aguila years <- 1987:2022 base_url <- “https://azmet.arizona.edu/azmet/data

Build list of files ——————————————————-

yy <- sprintf(“%02d”, years %% 100) file_names <- paste0(station_number, yy, “rd.txt”) urls <- file.path(base_url, file_names)

cat(“First few URLs I will read:”) print(head(urls))

Function to read 1 year’s data ——————————————-

read_aguila_year <- function(url) { cat(“Reading:”, url, “”)

df <- read_csv( url, col_names = FALSE, show_col_types = FALSE )

df_clean <- df %>% transmute( YEAR2 = X1, DOY = X2, STATION_NO = X3, TMAX_C = X4 ) %>% mutate( # Convert 2-digit year YEAR = if_else(YEAR2 >= 87, 1900 + YEAR2, 2000 + YEAR2),

  # Convert DOY to actual date
  DATE = as.Date(DOY - 1, origin = paste0(YEAR, "-01-01")),

  # Fix missing values (999)
  TMAX_C = if_else(TMAX_C >= 900, NA_real_, TMAX_C),

  # Convert to Fahrenheit
  TMAX_F = TMAX_C * 9/5 + 32,

  STATION = "AGUILA"
)

return(df_clean) }

Read all files ————————————————————

all_years <- list()

for (i in seq_along(urls)) { this_url <- urls[i]

this_df <- try(read_aguila_year(this_url), silent = TRUE)

if (inheri