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")