Because airquality is a pre-built dataset, we can write it to our data directory to store it for later use.
The source for this dataset is the New York State Department of Conservation and the National Weather Service of 1973 for five months from May to September recorded daily
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.5
✔ forcats 1.0.0 ✔ stringr 1.5.1
✔ ggplot2 3.5.1 ✔ tibble 3.2.1
✔ lubridate 1.9.3 ✔ tidyr 1.3.1
✔ purrr 1.0.2
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Load the dataset into your global environment
data("airquality")
Look at the structure of the data
the function, head, will only disply the first 6 rows of the dataset. Notice in the global environment to the right, there are 153 observations (rows)
See how Month has changed to have characters instead of numbers
summary(airquality$Month)
Length Class Mode
153 character character
Month is a categorical variable with different levels, called factors.
This is one way to reorder the Months so they do not default to alphabetical (you will see another way to reorder DIRECTLY in the chunk that creates the plot below in Plot 1)
Here is a first attempt at viewing a histogram of temperature by the months May through September. We will see that temperatures increase over these months. The median temperature appears to be about 75 degrees.
Reorder the legend so that it is not the default (alphabetical), but rather in chronological order.
fill = Month colors the histogram by months between May - Sept.
scale_fill_discrete(name = “Month”…) provides the month names on the right side as a legend.
p1 <- airquality |>ggplot(aes(x=Temp, fill=Month)) +geom_histogram(position ="identity") +scale_fill_discrete(name ="Month", labels =c("May", "June","July", "August", "September")) +labs(x ="Monthly Temperatures from May - Sept", y ="Frequency of Temps",title ="Histogram of Monthly Temperatures from May - Sept, 1973",caption ="New York State Department of Conservation and the National Weather Service") #provide the data sourcep1
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
stat_bin()usingbins = 30. Pick better value withbinwidth`.
Is this plot useful in answering questions about monthly temperature values?
Plot 2: Improve the histogram using ggplot
Outline the bars in white using the color = “white” command
Use alpha to add some transparency (values between 0 and 1)
Change the binwidth
Histogram of Average Temperature by Month
Add some transparency and white borders around the histogram bars. Here July stands out for having high frequency of 85 degree temperatures. The dark purple color indicates overlaps of months due to the transparency.
p2 <- airquality |>ggplot(aes(x=Temp, fill=Month)) +geom_histogram(position="identity", alpha=0.5, binwidth =5, color ="white")+scale_fill_discrete(name ="Month", labels =c("May", "June","July", "August", "September")) +labs(x ="Monthly Temperatures from May - Sept", y ="Frequency of Temps",title ="Histogram of Monthly Temperatures from May - Sept, 1973",caption ="New York State Department of Conservation and the National Weather Service")p2
Plot 3: Create side-by-side boxplots categorized by Month
p3 <- airquality |>ggplot(aes(Month, Temp, fill = Month)) +labs(x ="Months from May through September", y ="Temperatures", title ="Side-by-Side Boxplot of Monthly Temperatures",caption ="New York State Department of Conservation and the National Weather Service") +geom_boxplot() +scale_fill_discrete(name ="Month", labels =c("May", "June","July", "August", "September"))p3
Notice that the points above and below the boxplots in June and July are outliers.
Plot 4: Make the same side-by-side boxplots, but in grey-scale
p4 <- airquality |>ggplot(aes(Month, Temp, fill = Month)) +labs(x ="Monthly Temperatures", y ="Temperatures", title ="Side-by-Side Boxplot of Monthly Temperatures",caption ="New York State Department of Conservation and the National Weather Service") +geom_boxplot()+scale_fill_grey(name ="Month", labels =c("May", "June","July", "August", "September"))p4
Summary statistics of the Wind Variables:
summary(airquality$Wind)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.700 7.400 9.700 9.958 11.500 20.700
Na’s represents missing data, and it makes our plots incomplete due to gaps created by the unavailability of data.
p5 <-ggplot(clean_data, aes(x = Month, y = Wind, color = Month)) +geom_point() +labs(x ="Month",, y ="Wind Speed", title ="Wind Speed by Month")print(p5)
This plot visualizes the relationship between wind speed by month.The x-axis represents the month of the year (May-September),while the y-axis represents the wind speed.Each point on the plot represents the wind speed recorded for a specific day within the corresponding month,with higher than usual wind speed in May and June(higher outlier) and usual lower wind speed in August.
I used the summary statistics code to get Q1 and Q3, to enable me find IQR and the corresponding Outliers, and I utilize the ggplot code to create the scatter plot visualization.
Overall, the plot provides insight into how wind speeds vary throughout the months from May to September.