Instructions

Homework is optional, but we recommend it so you can get the most out of this course.

## you can add more, or change...these are suggestions
library(tidyverse)
library(readr)
library(dplyr)
library(ggplot2)
library(tidyr)

Problem Set

1. Bring the following dataset into R.

2. Check out and clean the columns of the water object.

3. Clean up the “datetime” column.

4. Separate “datetime_fixed” into two separate columns using the separate() function. Use into = c("date", "time") and sep = " " arguments. Replace the original water object by reassigning the new dataset to water.

5. What is the class for “Result” column? Use pull(). Can you take the mean value? Why or why not?

6. Some of the values of the “Result” column contain symbols “<”, “>”, and/or “=”. Replace these:

7. Use mutate() and as.numeric() to convert the “Result” column to numeric class. Then convert “Parameter” to a factor with as.factor(). Reassign to water both times.

8. How many different measurements (levels) are stored in the “Parameter” column? Use pull() and levels().

9. Use the pct_complete() function in the naniar package to determine the percent missing data in “Results”. You might need to load and install naniar!

10. Are there any parameter levels that have an incomplete record in water across all years?

11. Subset water so that it only contains results for the years 2010 - 2024, using & and the filter() function. Make sure to include both the years 2010 and 2024. Confirm your filtering worked by looking at the range() of “Year”. Assign this subsetted tibble to water_subset.

12. Subset water_subset so that the “Parameter” column only contains results from the tests for “Dissolved Oxygen”, “pH”, and “Water Temperature”. Use the %in% operator and the filter() function. Make sure to reassign to water_subset.

13. Load the new dataset “Baltimore_rainfall_HamiltonAve.csv” into R.

This dataset contains measured precipitation by month, as collected near the Hamilton Ave testing location in Baltimore.

14. Reshape rainfall into long format using pivot_longer(). The reshaped dataset should contain three columns: year (“Year”), month (“Month”), and amount of rainfall (“Precip”).

15. How many possible “Year” and “Month” combinations are in rainfall_long? Use count(). How does this compare to nrow()? Can you use this information to determine the number of observations per each Year and Month combination?

16. We would like to join the rainfall measurements dataset with the Baltimore surface water quality dataset, but we need to do a bit more wrangling first. Because the rainfall measures were collected near the Hamilton Ave water testing site, let’s keep only the Hamilton Ave data from the water_subset data, using filter(). Assign this to water_Ham.

17. Right-join water_Ham and rainfall_long by “Month” and “Year” using right_join(). Assign the joined dataset to the name water_rain. Did this join attempt work? Why or why not?

18. Check the class of the “Month” column in each dataset. Reformat “Month” in rainfall_long so that it matches the format in water_Ham. Use case_when() and mutate(), then reassign to rainfall_long.

19. NOW try to right-join water_Ham and rainfall_long by “Month” and “Year” and assign the joined dataset to the name water_rain. Did this join attempt work?

20. Fix the differences between the classes of “Year” by changing rainfall_long. Then right-join the two datasets to make “water_rain”.

21. Subset water_rain so that “Parameter” is “pH”. Plot points with “Precip” on the x axis, “Result” on the y axis, and “Year” as color. Facet the plot by Month. You can use esquisse or ggplot (whichever you prefer).

22. Create a new plot changing the measurement units. This time, subset water_rain so that “Parameter” is “Water Temperature”. Plot points with “Precip” on the x axis, “Result” on the y axis, and “Year” as color. Facet the plot by Month. You can use esquisse or ggplot (whichever you prefer). Do the temperatures follow the expected seasonal climate across months (highs and lows)?