library(readr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(tidyr)

kjusjur_61_00<- read_csv("/Users/kaitlynmaritan/Desktop/R-spatial/Final_Project/kjusjurstation.csv")
## Rows: 480 Columns: 22
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (1): Station Name
## dbl (21): Station, Year, Month, Day, Time, PIF, Latitude, Longitude, Tempera...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
#Remove unnecessary columns 
kjusjur_61_00<- kjusjur_61_00 %>% select(-"Station", -"Day",-"Time", -"PIF", 
                                         -"Sea Level Pressure", -"Wind Direction",
                                         -"Wind Speed", -"Total Cloud Amount", -"Low Cloud Amount",
                                         -"Relative Humidity", -"Dew Point", -"Wet Bulb",-"Sea Surface", 
                                         -"Vapor Pressure",-"Soil or Ice",-"Station Name")

#Remove missing temperature values
kjusjur_61_00[kjusjur_61_00 == 999.99]<- NA
kjusjur_61_00 <- kjusjur_61_00 %>% filter(!is.na(Temperature))

# Convert month numbers to month names 
kjusjur_61_00$Month <- month.abb[as.numeric(kjusjur_61_00$Month)]
kjusjur_61_00$Month <- factor(kjusjur_61_00$Month, levels = month.abb)

Monthly mean and monthly median air temperature; (1961-2000)

kjusjur_61_00.mean <- kjusjur_61_00
kjusjur_61_00.median <-kjusjur_61_00

#Calculate monthly mean 1961-2000
kjusjur_61_00.mean <- kjusjur_61_00.mean %>%
  group_by(Month) %>%
  summarise(MeanTemp = mean(Temperature, na.rm = TRUE)) %>%
  ungroup()

print(kjusjur_61_00.mean)
## # A tibble: 12 × 2
##    Month MeanTemp
##    <fct>    <dbl>
##  1 Jan     -38.1 
##  2 Feb     -34.1 
##  3 Mar     -26.4 
##  4 Apr     -15.4 
##  5 May      -3.41
##  6 Jun       7.67
##  7 Jul      12.5 
##  8 Aug       9.26
##  9 Sep       1.89
## 10 Oct     -12.3 
## 11 Nov     -30.1 
## 12 Dec     -35.1
#Calculate monthly median 1961-2000
kjusjur_61_00.median <- kjusjur_61_00.median %>%
  group_by(Month) %>%
  summarise(MedianTemp = median(Temperature, na.rm = TRUE)) %>%
  ungroup()

print(kjusjur_61_00.median)
## # A tibble: 12 × 2
##    Month MedianTemp
##    <fct>      <dbl>
##  1 Jan       -37.8 
##  2 Feb       -33.7 
##  3 Mar       -26.6 
##  4 Apr       -15.4 
##  5 May        -3.2 
##  6 Jun         7.8 
##  7 Jul        12.0 
##  8 Aug         9.15
##  9 Sep         1.7 
## 10 Oct       -12.1 
## 11 Nov       -30   
## 12 Dec       -35
#Plot monthly mean 1961-2000
ggplot(kjusjur_61_00.mean) +
  geom_rect(aes(xmin = as.numeric(Month) - 0.4,
                xmax = as.numeric(Month) + 0.4,
                ymin = -50,
                ymax = MeanTemp),
            fill = "skyblue", color = "black") +
  geom_text(aes(x = as.numeric(Month), y = MeanTemp, label = round(MeanTemp, 1)),
            vjust = -0.5, size = 3.5) + 
  scale_x_continuous(breaks = 1:12, labels = levels(kjusjur_61_00.mean$Month)) +
  scale_y_continuous(breaks = seq(-50, 20, 10), limits = c(-50, 20)) +
  geom_hline(yintercept = -50, color = "black") +
  labs(
    title = "Monthly Mean Temperature: Kjusjur Station (1961–2000)",
    x = "Month",
    y = "Temperature (°C)"
  )

#Plot monthly median 1961-2000
ggplot(kjusjur_61_00.median) +
  geom_rect(aes(xmin = as.numeric(Month) - 0.4,
                xmax = as.numeric(Month) + 0.4,
                ymin = -50,
                ymax = MedianTemp),
            fill = "skyblue", color = "black") +
  geom_text(aes(x = as.numeric(Month), y = MedianTemp, label = round(MedianTemp, 1)),
            vjust = -0.5, size = 3.5) + 
  scale_x_continuous(breaks = 1:12, labels = levels(kjusjur_61_00.median$Month)) +
  scale_y_continuous(breaks = seq(-50, 20, 10), limits = c(-50, 20)) +
  geom_hline(yintercept = -50, color = "black") +
  labs(
    title = "Monthly Median Temperature: Kjusjur Station (1961–2000)",
    x = "Month",
    y = "Temperature (°C)"
  )

Monthly mean with standard deviation air temperature; (1961-2000)

#Calculate standard deviation for temperature mean
SD.kjusjur_61_00 <- kjusjur_61_00


SD.kjusjur_61_00 <- SD.kjusjur_61_00 %>%
  group_by(Month) %>%
  summarise(
    MeanTemp = mean(Temperature, na.rm = TRUE),
    SD = sd(Temperature, na.rm = TRUE)
  ) %>%
  ungroup()

#Plot temperature mean with standard deviation
ggplot(SD.kjusjur_61_00) +
  geom_rect(aes(xmin = as.numeric(Month) - 0.4,
                xmax = as.numeric(Month) + 0.4,
                ymin = -50,
                ymax = MeanTemp),
            fill = "skyblue", color = "black") +
  geom_errorbar(aes(x = as.numeric(Month), 
                    ymin = MeanTemp - SD, 
                    ymax = MeanTemp + SD),
                width = 0.2, color = "black") +
  scale_x_continuous(breaks = 1:12, labels = levels(kjusjur_61_00.median$Month)) +
  scale_y_continuous(breaks = seq(-50, 20, 10), limits = c(-50, 20)) +  # Adjusted limit for error bars/text
  geom_hline(yintercept = -50, color = "black") +
  labs(
    title = "Monthly Median Temperature with Standard Deviation: Kjusjur Station (1961–2000)",
    x = "Month",
    y = "Temperature (°C)"
  )

Side-by-side monthly mean and median (1961-2000)

#Create data frame with mean and median
mean.median_kjusjur_61_00 <- left_join(kjusjur_61_00.mean, kjusjur_61_00.median, by = "Month") %>%
  pivot_longer(cols = c(MeanTemp, MedianTemp),
               names_to = "Statistic",
               values_to = "Temperature") %>%
  mutate(
    Month = factor(Month, levels = unique(Month)),         
    Statistic = recode(Statistic, MeanTemp = "Mean", MedianTemp = "Median")  
  )


#Plot side by side mean and median
mean.median_kjusjur_61_00 <- mean.median_kjusjur_61_00 %>%
  mutate(
    x = as.numeric(Month),
    offset = ifelse(Statistic == "Mean", -0.2, 0.2),
    xmin = x + offset - 0.2,
    xmax = x + offset + 0.2)


ggplot(mean.median_kjusjur_61_00) +
  geom_rect(aes(xmin = xmin, xmax = xmax, ymin = -50, ymax = Temperature, fill = Statistic),
            color = "black") +
  scale_x_continuous(breaks = 1:12, labels = levels(mean.median_kjusjur_61_00$Month)) +
  scale_y_continuous(breaks = seq(-50, 20, 10), limits = c(-50, 20)) +
  scale_fill_manual(values = c("Mean" = "skyblue", "Median" = "orange")) +
  geom_hline(yintercept = -50, color = "black") +
  labs(
    title = "Monthly Mean & Median Temperatures: Kjusjur Station 1961–2000",
    x = "Month",
    y = "Temperature (°C)",
    fill = "Statistic"
  )

Compare 1961-1980 to 1981-2000

1981-2000

#Calculate monthly mean 1981-2000
kjusjur_81_00 <- kjusjur_61_00 %>% filter (Year > 1980)

kjusjur_81_00.mean <- kjusjur_81_00
kjusjur_81_00.median <-kjusjur_81_00

kjusjur_81_00.mean <- kjusjur_81_00.mean %>%
  group_by(Month) %>%
  summarise(MeanTemp = mean(Temperature, na.rm = TRUE)) %>%
  ungroup()
 
print(kjusjur_81_00.mean)
## # A tibble: 12 × 2
##    Month MeanTemp
##    <fct>    <dbl>
##  1 Jan     -37.8 
##  2 Feb     -32.9 
##  3 Mar     -26.2 
##  4 Apr     -15.2 
##  5 May      -2.85
##  6 Jun       7.68
##  7 Jul      12.6 
##  8 Aug       9.35
##  9 Sep       1.91
## 10 Oct     -12.2 
## 11 Nov     -30.0 
## 12 Dec     -34.6
#Calculate monthly median 1981-2000
kjusjur_81_00.median <- kjusjur_81_00.median  %>%
  group_by(Month) %>%
  summarise(MedianTemp = median(Temperature, na.rm = TRUE)) %>%
  ungroup()

print(kjusjur_81_00.median)
## # A tibble: 12 × 2
##    Month MedianTemp
##    <fct>      <dbl>
##  1 Jan       -37.5 
##  2 Feb       -33.3 
##  3 Mar       -26.6 
##  4 Apr       -15.2 
##  5 May        -3   
##  6 Jun         7.9 
##  7 Jul        12.4 
##  8 Aug         9.25
##  9 Sep         1.7 
## 10 Oct       -11.5 
## 11 Nov       -30   
## 12 Dec       -34.5
# Plot mean and median 1981-2000

#Mean
ggplot(kjusjur_81_00.mean) +
  geom_rect(aes(xmin = as.numeric(Month) - 0.4,
                xmax = as.numeric(Month) + 0.4,
                ymin = -50,
                ymax = MeanTemp),
            fill = "yellow", color = "black") +
  geom_text(aes(x = as.numeric(Month), y = MeanTemp, label = round(MeanTemp, 1)),
            vjust = -0.5, size = 3.5) + 
  scale_x_continuous(breaks = 1:12, labels = levels(kjusjur_81_00.mean$Month)) +
  scale_y_continuous(breaks = seq(-50, 20, 10), limits = c(-50, 20)) +
  geom_hline(yintercept = -50, color = "black") +
  labs(
    title = "Monthly Mean Temperature: Kjusjur Station (1981–2000)",
    x = "Month",
    y = "Temperature (°C)"
  )

#Median
ggplot(kjusjur_81_00.median) +
  geom_rect(aes(xmin = as.numeric(Month) - 0.4,
                xmax = as.numeric(Month) + 0.4,
                ymin = -50,
                ymax = MedianTemp),
            fill = "green", color = "black") +
  geom_text(aes(x = as.numeric(Month), y = MedianTemp, label = round(MedianTemp, 1)),
            vjust = -0.5, size = 3.5) + 
  scale_x_continuous(breaks = 1:12, labels = levels(kjusjur_81_00.median$Month)) +
  scale_y_continuous(breaks = seq(-50, 20, 10), limits = c(-50, 20)) +
  geom_hline(yintercept = -50, color = "black") +
  labs(
    title = "Monthly Median Temperature: Kjusjur Station (1981–2000)",
    x = "Month",
    y = "Temperature (°C)"
  )

1961-1980

kjusjur_61_80 <- kjusjur_61_00 %>% filter (Year < 1981)


#Calculate monthly mean 1961-1980
kjusjur_61_80.mean <- kjusjur_61_80

kjusjur_61_80.mean <- kjusjur_61_80.mean %>%
  group_by(Month) %>%
  summarise(MeanTemp = mean(Temperature, na.rm = TRUE)) %>%
  ungroup()

print(kjusjur_61_80.mean)
## # A tibble: 12 × 2
##    Month MeanTemp
##    <fct>    <dbl>
##  1 Jan     -38.4 
##  2 Feb     -35.2 
##  3 Mar     -26.7 
##  4 Apr     -15.6 
##  5 May      -3.97
##  6 Jun       7.66
##  7 Jul      12.4 
##  8 Aug       9.18
##  9 Sep       1.88
## 10 Oct     -12.4 
## 11 Nov     -30.2 
## 12 Dec     -35.6
#Calculate monthly median 1961-1980
kjusjur_61_80.median <- kjusjur_61_80

kjusjur_61_80.median <- kjusjur_61_80.median  %>%
  group_by(Month) %>%
  summarise(MedianTemp = median(Temperature, na.rm = TRUE)) %>%
  ungroup()

print(kjusjur_61_80.median)
## # A tibble: 12 × 2
##    Month MedianTemp
##    <fct>      <dbl>
##  1 Jan       -37.8 
##  2 Feb       -34.6 
##  3 Mar       -26.6 
##  4 Apr       -16.2 
##  5 May        -4   
##  6 Jun         7.8 
##  7 Jul        11.8 
##  8 Aug         9   
##  9 Sep         1.65
## 10 Oct       -12.1 
## 11 Nov       -30.4 
## 12 Dec       -36.1
# Plot mean and median 1961-1980

#Mean
ggplot(kjusjur_61_80.mean) +
  geom_rect(aes(xmin = as.numeric(Month) - 0.4,
                xmax = as.numeric(Month) + 0.4,
                ymin = -50,
                ymax = MeanTemp),
            fill = "pink", color = "black") +
  geom_text(aes(x = as.numeric(Month), y = MeanTemp, label = round(MeanTemp, 1)),
            vjust = -0.5, size = 3.5) + 
  scale_x_continuous(breaks = 1:12, labels = levels(kjusjur_61_80.mean$Month)) +
  scale_y_continuous(breaks = seq(-50, 20, 10), limits = c(-50, 20)) +
  geom_hline(yintercept = -50, color = "black") +
  labs(
    title = "Monthly Mean Temperature: Kjusjur Station (1961–1980)",
    x = "Month",
    y = "Temperature (°C)"
  )

#Median
ggplot(kjusjur_61_80.median) +
  geom_rect(aes(xmin = as.numeric(Month) - 0.4,
                xmax = as.numeric(Month) + 0.4,
                ymin = -50,
                ymax = MedianTemp),
            fill = "purple", color = "black") +
  geom_text(aes(x = as.numeric(Month), y = MedianTemp, label = round(MedianTemp, 1)),
            vjust = -0.5, size = 3.5) + 
  scale_x_continuous(breaks = 1:12, labels = levels(kjusjur_61_80.median$Month)) +
  scale_y_continuous(breaks = seq(-50, 20, 10), limits = c(-50, 20)) +
  geom_hline(yintercept = -50, color = "black") +
  labs(
    title = "Monthly Median Temperature: Kjusjur Station (1961–1980)",
    x = "Month",
    y = "Temperature (°C)"
  )

Plot side by side mean of 1961-1980 and 1981-2000

#Create data frame with both time frames

kjusjur_61_80.mean$Period <- "1961–1980"
kjusjur_81_00.mean$Period <- "1981–2000"

combined.kjusjur <- rbind(kjusjur_61_80.mean, kjusjur_81_00.mean) 

ggplot(combined.kjusjur, aes(x = Month, y = MeanTemp, fill = Period)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.6) +
  labs(title = "Monthly Average Temperatures",
       y = "Degrees C", x = NULL) +
  scale_y_continuous(breaks = seq(-50, 20, 10), limits = c(-50, 20)) +
  scale_fill_manual(values = c("1961–1980" = "lightblue", "1981–2000" = "purple")) +
  geom_hline(yintercept = -50, color = "black")