Air Quality Assignment

Author

Asma Abbas

Load in the library

library(tidyverse)
Warning: package 'tidyverse' was built under R version 4.4.3
── 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 data set into the global environment

data("airquality")

Look at the structure of the data

view the data using the “head” function.

head(airquality)
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6

calculate summary statistics

mean(airquality$Temp)
[1] 77.88235
mean(airquality[,4]) 
[1] 77.88235

Calculate median, standard deviation, and variance

Median:

median(airquality$Temp)
[1] 79

Standard Deviation:

sd(airquality$Wind)
[1] 3.523001

Variance

var(airquality$Wind)
[1] 12.41154

Rename the Months from number to names

airquality$Month[airquality$Month == 5]<- "May"
airquality$Month[airquality$Month == 6]<- "June"
airquality$Month[airquality$Month == 7]<- "July"
airquality$Month[airquality$Month == 8]<- "August"
airquality$Month[airquality$Month == 9]<- "September"

Now look at the summary statistics of the dataset

See how Month has changed to have characters instead of numbers (it is now classified as “character” rather than “integer”)

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

airquality$Month<-factor(airquality$Month, 
                         levels=c("May", "June","July", "August",
                                  "September"))

Plot 1: create a histogram categorized by month

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.

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 in chronological order. This is a different way to order than what was shown above.

labs allows us to add a title, axes labels, and a caption for the data source

Plot 1 code:

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 source

Plot 1 Output

p1
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Is this plot useful in answering questions about monthly temperature values?

Honestly, I think it’s not entirely all that useful. The graph is jumbled and a little difficult to read. Everything is on top of each other, and it’s hard to understand the graph.

Plot 2: improve the histogram of Average temprature by month

-Outline the bars in white using the color = “white” command

-Use alpha to add some transparency (values between 0 and 1)

-Change the binwidth

-Add some transparency and white borders around the histogram bars.

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

Plot 2 output

p2

Did this improve the readability of the plot?

# yes, it definitely improved the readability of the plot. Now you can tell which month is which, and they aren't all smooshed on top of one another. 

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

Plot 3

p3

Plot 4: side by side boxplots in Gray scale

Make the same side-by-side boxplots, but in grey-scale

Use the scale_fill_grey command for the grey-scale legend, and again, use fill=Month in the aesthetics.

Plot 4 code

Here we just changed the color palette to gray scale using scale_fill_grey

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

Plot 4

p4

Plot 5

Now make one new plot on your own, that is meaningfully different from the 4 I have shown you. You can select any of the variables in this dataset. Be sure to explore the dataset to see which variables are included that we have not explored yet. You may create a scatterplot, histogram, boxplot, or something else.

Be sure to include a title, axes labels, and caption for the datasource in your Plot 5. Then finally, below your chunk of code for your plot 5, ….

p5 <- airquality |>
  
  ggplot(aes(x = Temp, y = Wind)) +
  geom_point(color = "Magenta", size = 3, alpha = 0.4) +
  labs(x = "Temperature (F)", y = "Wind speed (mph)",
       title = "Scatterplot of Wind Speed vs Temperature",
       caption = "New York State Department of Conservation and the National Weather Service")
p5

Write a brief essay here

Describe the plot type you have created

Any insights that the plot shows

Describe any special code you used to make this plot

## The graph I made isn't really special, and doesn't use any special code. Essentially, it is a scatterplot comparing two variables from the data set, ones that I did not see interacted with previously. The variable on the x-axis is Temperature, from colder to warmer, and on the Y-axis is the wind speeds.The code I used is modeled after the structure used in the previous graphs. I took data from the dataset, and declared the variables and their axis. Then, I selected what kind of graph to make, and since these are two numerical variables, I picked a scatterplot. I adjusted some of the visual settings like color, size, and transparency of the points. After that, the axis labels, title, and caption were included. A meaningful insight that this plot displays is how the wind speed becomes (slightly) lower when temperatures become higher. In lower climates, the wind reaches higher speeds. However, there highest speed is reached in the 70 degree range, which I found interesting.