Prof. Eric A. Suess
So how should you complete your homework for this class?
- First thing to do is type all of your information about the problems
you complete in the text part of your R Notebook.
- Second thing to do is type all of your R code into R chunks that can
be run.
- If you load the tidyverse in an R Notebook chunk, be sure to include
the “message = FALSE” in the {r}, so {r message = FALSE}.
- Last thing is to spell check your R Notebook. Edit > Check
Spelling… or hit the F7 key.
Using an R Notebook produce your solutions to the following
questions. Start by making an R Notebook with file name
Lastname_Firstname_Stat651_hw2.Rmd. Then knit the .Rmd file to either
Lastname_Firstname_Stat651_hw2.docx. Use your own last name and first
name in the filename. At the top of your first page you should include
Name, Class, Section, and homework assignment.
The header of your R Notebooks should include
title: “Stat. 651 Homework 2”
author: “Your name”
date: “October 31, 2022”
Upload one file to Blackboard.
Instructions: Put all of your R code, .docx, .html, etc. files, and
Tableau files into one directory. Zip the directory into a .zip file and
then upload it to Blackboard. Make sure the directory has your name it
it. Directory name lastname_firstname_Stat651_homework02.
Homework 2:
- Watch the The beauty of data visualization - David McCandless
- Make the plots for the CIACountries data in Tableau.
- Chapter 14 Exercises Problem 3, Problem 4, Problem 6, Problem 7, Problem 8
In Tableau
Here is the link to my CIACountries
Dashboard
The pacman package in R can be used to load many packages at once
using the p_load() function.
library(pacman)
p_load(tidyverse, macleish, lubridate, mdsr, DT, palmerpenguins)
Chapter 14 Problem 3
Note that a second date frame can be used to add the seasons to the
plot.
whately_2015 %>% select(when, temperature)
seasons_2015 <- tibble(
when = (ymd(c("2015 March 20", "2015 June 21", "2015 September 23", "2015 December 21"))),
season = c("Spring", "Summer", "Fall", "Winter")
)
seasons_2015
whately_plot <- whately_2015 %>% ggplot(aes(y = temperature, x = as.Date(when))) +
geom_vline(data = seasons_2015, color = "darkgray", aes( xintercept = as.Date(when) ) ) +
geom_text(data = seasons_2015, aes(y = 33, label = season, hjust = "left")) +
geom_line(size = 0.3) +
geom_smooth() +
scale_x_date()
whately_plot

Chapter 14 Problem 4
The Violations dataset is in the mdsr package. Let look at the tables
in the dataset.
Violations
ViolationCodes
Cuisines
Join the Cuisines to the Violations dataframe.
mergedViolations <- Violations %>%
right_join(Cuisines)
Joining, by = "cuisine_code"
mergedViolations
mergedViolations %>% select(dba, boro, cuisine_description) %>%
group_by(cuisine_description) %>%
summarize(n = n_distinct(dba)) %>%
filter(cuisine_description == "Pizza")
mergedViolations %>% select(dba, boro, cuisine_description) %>%
filter(boro == "BROOKLYN") %>%
group_by(cuisine_description) %>%
summarize(n = n_distinct(dba)) %>%
filter(cuisine_description == "Caribbean")
NA
Provide the link to your shinyapp.io violations_app
Chapter 14 Problem 6
library(mosaicData)
p <- HELPrct %>% ggplot(aes(x = age, y = cesd)) +
geom_point() +
theme_classic() +
stat_smooth(method = "loess", formula = y ~ x, size = 2)
ggExtra::ggMarginal(p, type = "histogram", binwidth = 3)


Chapter 14 Problem 7
penguins
names(penguins)
[1] "species" "island"
[3] "bill_length_mm" "bill_depth_mm"
[5] "flipper_length_mm" "body_mass_g"
[7] "sex" "year"
setdiff(names(iris), "Species")
[1] "Sepal.Length" "Sepal.Width" "Petal.Length"
[4] "Petal.Width"
penguins %>% ggplot(aes(x = bill_length_mm, y = bill_depth_mm, color = sex )) +
geom_point()

penguins %>% filter(species == "Adelie") %>%
ggplot( aes(x = bill_length_mm, y = bill_depth_mm, color = sex)) + geom_point()

Penguin App
Chapter 14 Problem 8
LS0tCnRpdGxlOiAnU3RhdC4gNjUxIFNlY3Rpb24gMSBvciAyOiBIb21ld29yayAyJwpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAogIHdvcmRfZG9jdW1lbnQ6IGRlZmF1bHQKICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQKLS0tCioqUHJvZi4gRXJpYyBBLiBTdWVzcyoqCgpTbyBob3cgc2hvdWxkIHlvdSBjb21wbGV0ZSB5b3VyIGhvbWV3b3JrIGZvciB0aGlzIGNsYXNzPwoKLSBGaXJzdCB0aGluZyB0byBkbyBpcyB0eXBlIGFsbCBvZiB5b3VyIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9ibGVtcyB5b3UgY29tcGxldGUgaW4gdGhlIHRleHQgcGFydCBvZiB5b3VyIFIgTm90ZWJvb2suCi0gU2Vjb25kIHRoaW5nIHRvIGRvIGlzIHR5cGUgYWxsIG9mIHlvdXIgUiBjb2RlIGludG8gUiBjaHVua3MgdGhhdCBjYW4gYmUgcnVuLgotIElmIHlvdSBsb2FkIHRoZSB0aWR5dmVyc2UgaW4gYW4gUiBOb3RlYm9vayBjaHVuaywgYmUgc3VyZSB0byBpbmNsdWRlIHRoZSAibWVzc2FnZSA9IEZBTFNFIiBpbiB0aGUge3J9LCBzbyB7ciBtZXNzYWdlID0gRkFMU0V9LgotIExhc3QgdGhpbmcgaXMgdG8gc3BlbGwgY2hlY2sgeW91ciBSIE5vdGVib29rLiAgRWRpdCA+IENoZWNrIFNwZWxsaW5nLi4uIG9yIGhpdCB0aGUgRjcga2V5LgoKClVzaW5nIGFuIFIgTm90ZWJvb2sgcHJvZHVjZSB5b3VyIHNvbHV0aW9ucyB0byB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy4gU3RhcnQgYnkgbWFraW5nIGFuIFIgTm90ZWJvb2sgd2l0aCBmaWxlIG5hbWUgTGFzdG5hbWVfRmlyc3RuYW1lX1N0YXQ2NTFfaHcyLlJtZC4gVGhlbiBrbml0IHRoZSAuUm1kIGZpbGUgdG8gZWl0aGVyIExhc3RuYW1lX0ZpcnN0bmFtZV9TdGF0NjUxX2h3Mi5kb2N4LiBVc2UgeW91ciBvd24gbGFzdCBuYW1lIGFuZCBmaXJzdCBuYW1lIGluIHRoZSBmaWxlbmFtZS4gQXQgdGhlIHRvcCBvZiB5b3VyIGZpcnN0IHBhZ2UgeW91IHNob3VsZCBpbmNsdWRlIE5hbWUsIENsYXNzLCBTZWN0aW9uLCBhbmQgaG9tZXdvcmsgYXNzaWdubWVudC4KClRoZSBoZWFkZXIgb2YgeW91ciBSIE5vdGVib29rcyBzaG91bGQgaW5jbHVkZQoKdGl0bGU6ICJTdGF0LiA2NTEgSG9tZXdvcmsgMiIgCgphdXRob3I6ICJZb3VyIG5hbWUiIAoKZGF0ZTogIk9jdG9iZXIgMzEsIDIwMjIiCgpVcGxvYWQgb25lIGZpbGUgdG8gQmxhY2tib2FyZC4KCkluc3RydWN0aW9uczogUHV0IGFsbCBvZiB5b3VyIFIgY29kZSwgLmRvY3gsIC5odG1sLCBldGMuIGZpbGVzLCBhbmQgVGFibGVhdSBmaWxlcyBpbnRvIG9uZSBkaXJlY3RvcnkuIFppcCB0aGUgZGlyZWN0b3J5IGludG8gYSAuemlwIGZpbGUgYW5kIHRoZW4gdXBsb2FkIGl0IHRvIEJsYWNrYm9hcmQuIE1ha2Ugc3VyZSB0aGUgZGlyZWN0b3J5IGhhcyB5b3VyIG5hbWUgaXQgaXQuIERpcmVjdG9yeSBuYW1lIGxhc3RuYW1lX2ZpcnN0bmFtZV9TdGF0NjUxX2hvbWV3b3JrMDIuCgpIb21ld29yayAyOgoKICAgIC0gV2F0Y2ggdGhlIFRoZSBiZWF1dHkgb2YgZGF0YSB2aXN1YWxpemF0aW9uIC0gRGF2aWQgTWNDYW5kbGVzcwogICAgLSBNYWtlIHRoZSBwbG90cyBmb3IgdGhlIENJQUNvdW50cmllcyBkYXRhIGluIFRhYmxlYXUuCgogICAgLSBDaGFwdGVyIDE0IEV4ZXJjaXNlcyBQcm9ibGVtIDMsIFByb2JsZW0gNCwgUHJvYmxlbSA2LCBQcm9ibGVtIDcsIFByb2JsZW0gOAoKXG5ld3BhZ2UKCiMgSW4gVGFibGVhdQoKSGVyZSBpcyB0aGUgbGluayB0byBteSBbQ0lBQ291bnRyaWVzIERhc2hib2FyZF0oaHR0cHM6Ly9wdWJsaWMudGFibGVhdS5jb20vdmlld3MvbWFwd2l0aGRvdHNfMTY2Njg0NTc3NjAwNTAvU2hlZXQxPzpsYW5ndWFnZT1lbi1VUyY6ZGlzcGxheV9jb3VudD1uJjpvcmlnaW49dml6X3NoYXJlX2xpbmspCgoKVGhlIHBhY21hbiBwYWNrYWdlIGluIFIgY2FuIGJlIHVzZWQgdG8gbG9hZCBtYW55IHBhY2thZ2VzIGF0IG9uY2UgdXNpbmcgdGhlIHBfbG9hZCgpIGZ1bmN0aW9uLiAKICAgICAKYGBge3J9CmxpYnJhcnkocGFjbWFuKQoKcF9sb2FkKHRpZHl2ZXJzZSwgbWFjbGVpc2gsIGx1YnJpZGF0ZSwgbWRzciwgRFQsIHBhbG1lcnBlbmd1aW5zKQpgYGAKCiMgQ2hhcHRlciAxNCBQcm9ibGVtIDMKCk5vdGUgdGhhdCBhIHNlY29uZCBkYXRlIGZyYW1lIGNhbiBiZSB1c2VkIHRvIGFkZCB0aGUgc2Vhc29ucyB0byB0aGUgcGxvdC4KCmBgYHtyfQp3aGF0ZWx5XzIwMTUgJT4lIHNlbGVjdCh3aGVuLCB0ZW1wZXJhdHVyZSkKYGBgCgpgYGB7cn0Kc2Vhc29uc18yMDE1IDwtIHRpYmJsZSgKICAgIHdoZW4gPSAoeW1kKGMoIjIwMTUgTWFyY2ggMjAiLCAiMjAxNSBKdW5lIDIxIiwgIjIwMTUgU2VwdGVtYmVyIDIzIiwgIjIwMTUgRGVjZW1iZXIgMjEiKSkpLAogICAgc2Vhc29uID0gYygiU3ByaW5nIiwgIlN1bW1lciIsICJGYWxsIiwgIldpbnRlciIpCikKc2Vhc29uc18yMDE1CmBgYAoKCgpgYGB7cn0Kd2hhdGVseV9wbG90IDwtIHdoYXRlbHlfMjAxNSAlPiUgZ2dwbG90KGFlcyh5ID0gdGVtcGVyYXR1cmUsIHggPSBhcy5EYXRlKHdoZW4pKSkgKwogIGdlb21fdmxpbmUoZGF0YSA9IHNlYXNvbnNfMjAxNSwgY29sb3IgPSAiZGFya2dyYXkiLCBhZXMoIHhpbnRlcmNlcHQgPSBhcy5EYXRlKHdoZW4pICkgKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBzZWFzb25zXzIwMTUsIGFlcyh5ID0gMzMsIGxhYmVsID0gc2Vhc29uLCBoanVzdCA9ICJsZWZ0IikpICsKICBnZW9tX2xpbmUoc2l6ZSA9IDAuMykgKyAKICBnZW9tX3Ntb290aCgpICsKICBzY2FsZV94X2RhdGUoKQoKd2hhdGVseV9wbG90CmBgYAoKIyBDaGFwdGVyIDE0IFByb2JsZW0gNAoKVGhlIFZpb2xhdGlvbnMgZGF0YXNldCBpcyBpbiB0aGUgbWRzciBwYWNrYWdlLiAgTGV0IGxvb2sgYXQgdGhlIHRhYmxlcyBpbiB0aGUgZGF0YXNldC4KCgpgYGB7cn0KVmlvbGF0aW9ucwpgYGAKCmBgYHtyfQpWaW9sYXRpb25Db2RlcwpgYGAKCgpgYGB7cn0KQ3Vpc2luZXMKYGBgCgpKb2luIHRoZSBDdWlzaW5lcyB0byB0aGUgVmlvbGF0aW9ucyBkYXRhZnJhbWUuCgpgYGB7cn0KbWVyZ2VkVmlvbGF0aW9ucyA8LSBWaW9sYXRpb25zICU+JQogIHJpZ2h0X2pvaW4oQ3Vpc2luZXMpCgptZXJnZWRWaW9sYXRpb25zCmBgYAoKYGBge3J9Cm1lcmdlZFZpb2xhdGlvbnMgJT4lIHNlbGVjdChkYmEsIGJvcm8sIGN1aXNpbmVfZGVzY3JpcHRpb24pICU+JSAKICBncm91cF9ieShjdWlzaW5lX2Rlc2NyaXB0aW9uKSAlPiUgCiAgc3VtbWFyaXplKG4gPSBuX2Rpc3RpbmN0KGRiYSkpICU+JSAKICBmaWx0ZXIoY3Vpc2luZV9kZXNjcmlwdGlvbiA9PSAiUGl6emEiKQoKbWVyZ2VkVmlvbGF0aW9ucyAlPiUgc2VsZWN0KGRiYSwgYm9ybywgY3Vpc2luZV9kZXNjcmlwdGlvbikgJT4lIAogIGZpbHRlcihib3JvID09ICJCUk9PS0xZTiIpICU+JSAKICBncm91cF9ieShjdWlzaW5lX2Rlc2NyaXB0aW9uKSAlPiUgCiAgc3VtbWFyaXplKG4gPSBuX2Rpc3RpbmN0KGRiYSkpICU+JSAKICBmaWx0ZXIoY3Vpc2luZV9kZXNjcmlwdGlvbiA9PSAiQ2FyaWJiZWFuIikKCmBgYAoKUHJvdmlkZSB0aGUgbGluayB0byB5b3VyIHNoaW55YXBwLmlvIFt2aW9sYXRpb25zX2FwcF0oaHR0cHM6Ly9lc3Vlc3Muc2hpbnlhcHBzLmlvL3Zpb2xhdGlvbnMvKQoKIyBDaGFwdGVyIDE0IFByb2JsZW0gNgoKYGBge3J9CmxpYnJhcnkobW9zYWljRGF0YSkKcCA8LSBIRUxQcmN0ICU+JSBnZ3Bsb3QoYWVzKHggPSBhZ2UsIHkgPSBjZXNkKSkgKwogICAgZ2VvbV9wb2ludCgpICsKICAgIHRoZW1lX2NsYXNzaWMoKSArCiAgICBzdGF0X3Ntb290aChtZXRob2QgPSAibG9lc3MiLCBmb3JtdWxhID0geSB+IHgsIHNpemUgPSAyKQpnZ0V4dHJhOjpnZ01hcmdpbmFsKHAsIHR5cGUgPSAiaGlzdG9ncmFtIiwgYmlud2lkdGggPSAzKQpgYGAKCgojIENoYXB0ZXIgMTQgUHJvYmxlbSA3CgoKCmBgYHtyfQpwZW5ndWlucwpgYGAKCmBgYHtyfQpuYW1lcyhwZW5ndWlucykKCnNldGRpZmYobmFtZXMoaXJpcyksICJTcGVjaWVzIikKCnBlbmd1aW5zICU+JSBnZ3Bsb3QoYWVzKHggPSBiaWxsX2xlbmd0aF9tbSwgeSA9IGJpbGxfZGVwdGhfbW0sIGNvbG9yID0gc2V4ICkpICsKICBnZW9tX3BvaW50KCkKYGBgCgpgYGB7cn0KcGVuZ3VpbnMgJT4lICBmaWx0ZXIoc3BlY2llcyA9PSAiQWRlbGllIikgJT4lIAogICAgZ2dwbG90KCBhZXMoeCA9IGJpbGxfbGVuZ3RoX21tLCB5ID0gYmlsbF9kZXB0aF9tbSwgY29sb3IgPSBzZXgpKSArIGdlb21fcG9pbnQoKQpgYGAKCltQZW5ndWluIEFwcF0oaHR0cHM6Ly9lc3Vlc3Muc2hpbnlhcHBzLmlvL3Blbmd1aW5lcy8pCgoKIyBDaGFwdGVyIDE0IFByb2JsZW0gOAoKCgpgYGB7cn0KCmBgYAoKCg==