[30m── [1mAttaching packages[22m ──────────────────────────────────────── tidyverse 1.2.1 ──[39m
[30m[32m✔[30m [34mggplot2[30m 3.2.1 [32m✔[30m [34mpurrr [30m 0.3.2
[32m✔[30m [34mtibble [30m 2.1.3 [32m✔[30m [34mdplyr [30m 0.8.3
[32m✔[30m [34mtidyr [30m 0.8.3 [32m✔[30m [34mstringr[30m 1.4.0
[32m✔[30m [34mreadr [30m 1.3.1 [32m✔[30m [34mforcats[30m 0.4.0[39m
[30m── [1mConflicts[22m ─────────────────────────────────────────── tidyverse_conflicts() ──
[31m✖[30m [34mdplyr[30m::[32mfilter()[30m masks [34mstats[30m::filter()
[31m✖[30m [34mdplyr[30m::[32mlag()[30m masks [34mstats[30m::lag()[39m
Attaching package: ‘skimr’
The following object is masked from ‘package:stats’:
filter
Attaching package: ‘lubridate’
The following object is masked from ‘package:base’:
date
pets <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-03-26/seattle_pets.csv")
Parsed with column specification:
cols(
license_issue_date = [31mcol_character()[39m,
license_number = [31mcol_character()[39m,
animals_name = [31mcol_character()[39m,
species = [31mcol_character()[39m,
primary_breed = [31mcol_character()[39m,
secondary_breed = [31mcol_character()[39m,
zip_code = [31mcol_character()[39m
)
pets$species <- as.factor(pets$species)
ggplot(pets) +
aes(species)+
geom_bar()

NA
NA
NA
dogs <- pets %>%
filter(species == "Dog")
cats <- pets %>%
filter(species == "Cat")
skim(cats)
Skim summary statistics
n obs: 17294
n variables: 7
── Variable type:character ──────────────────────────────────────────────────────
variable missing complete n min max empty n_unique
animals_name 406 16888 17294 1 45 0 7026
license_issue_date 0 17294 17294 11 17 0 882
license_number 0 17294 17294 1 8 0 17286
primary_breed 0 17294 17294 3 21 0 58
secondary_breed 11173 6121 17294 3 21 0 52
zip_code 127 17167 17294 4 10 0 88
── Variable type:factor ─────────────────────────────────────────────────────────
variable missing complete n n_unique top_counts
species 0 17294 17294 1 Cat: 17294, Dog: 0, Goa: 0, Pig: 0
ordered
FALSE
cats_by_breed <- cats %>%
group_by(primary_breed) %>%
summarise(count = n()) %>%
arrange(desc(count))
ggplot(cats_by_breed, aes(reorder(primary_breed, count), y = count)) + geom_col() +
coord_flip()

'%not in%' <- Negate('%in%')
exclude_cat_breeds <- c("Domestic Shorthair", "Domestic Medium Hair", "Domestic Longhair", "American Shorthair")
cats_by_specific_breed <- cats_by_breed %>%
filter(primary_breed %not in% exclude_cat_breeds) %>%
filter(count >= 5)
ggplot(cats_by_specific_breed, aes(reorder(primary_breed, count), y = count)) + geom_col() +
coord_flip() +
labs(x = "Breed Name")

dogs %>%
group_by(primary_breed, animals_name) %>%
summarise(value = n()) %>%
filter(value == 2) %>%
arrange(desc(value))
GOT_names <- c("Tyrion", "Jon", "Cersei", "Daenerys", "Sansa", "Arya", "Jaime", "Jorah", "Theon", "Samwell")
GOT_pets <- pets %>%
filter(animals_name %in% GOT_names)
GOT_pets %>% group_by(animals_name) %>% summarise(count = n()) %>% arrange(desc(count))
library(gameofthrones)
library(showtext)
Loading required package: sysfonts
Loading required package: showtextdb
font_add_google(name = "Cinzel", family = "Cinzel")
showtext_auto()
ggplot(GOT_pets, aes(fct_infreq(animals_name), fill = species)) +
geom_bar() +
scale_fill_got_d(option = "Targaryen", direction = - 1) +
labs(title = "A Goat Named Arya", subtitle = "Game of Thrones Inspired (Maybe) Pet Names in Seattle", x = element_blank(), y = element_blank(), caption = "@MaraAlexeev") +
theme_minimal() +
theme(legend.position = c(0.9, 0.6)) +
labs(fill = "Pet Species") +
theme(text=element_text(size=16, family="Cinzel"))

NA
pets$license_issue_date <- as.Date(pets$license_issue_date, "%B %d %Y")
limited <- pets %>% filter(license_issue_date > 2018-01-01)
ggplot(limited, aes(license_issue_date)) + geom_bar() + scale_x_date()

LS0tCnRpdGxlOiAiVGlkeSBUdWVzZGF5IgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCmBgYHtyIGxpYnJhcmllcywgZWNobz19CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHNraW1yKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKYGBgCgoKCmBgYHtyfQpwZXRzIDwtIHJlYWRyOjpyZWFkX2NzdigiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Jmb3JkYXRhc2NpZW5jZS90aWR5dHVlc2RheS9tYXN0ZXIvZGF0YS8yMDE5LzIwMTktMDMtMjYvc2VhdHRsZV9wZXRzLmNzdiIpCgpgYGAKYGBge3J9CnBldHMkc3BlY2llcyA8LSBhcy5mYWN0b3IocGV0cyRzcGVjaWVzKQpgYGAKCgpgYGB7cn0KZ2dwbG90KHBldHMpICsgIAogIGFlcyhzcGVjaWVzKSsgCiAgZ2VvbV9iYXIoKQoKCgpgYGAKCmBgYHtyfQpkb2dzIDwtIHBldHMgJT4lIAogIGZpbHRlcihzcGVjaWVzID09ICJEb2ciKQoKY2F0cyA8LSBwZXRzICU+JSAKICBmaWx0ZXIoc3BlY2llcyA9PSAiQ2F0IikKCmBgYAoKYGBge3J9CnNraW0oY2F0cykKYGBgCgpgYGB7cn0KY2F0c19ieV9icmVlZCA8LSBjYXRzICU+JSAKICBncm91cF9ieShwcmltYXJ5X2JyZWVkKSAlPiUKICBzdW1tYXJpc2UoY291bnQgPSBuKCkpICU+JQogIGFycmFuZ2UoZGVzYyhjb3VudCkpCgpgYGAKCmBgYHtyfQpnZ3Bsb3QoY2F0c19ieV9icmVlZCwgYWVzKHJlb3JkZXIocHJpbWFyeV9icmVlZCwgY291bnQpLCB5ID0gY291bnQpKSArIGdlb21fY29sKCkgKwogIGNvb3JkX2ZsaXAoKQpgYGAKCmBgYHtyfQonJW5vdCBpbiUnIDwtIE5lZ2F0ZSgnJWluJScpCmBgYAoKYGBge3J9CmV4Y2x1ZGVfY2F0X2JyZWVkcyA8LSBjKCJEb21lc3RpYyBTaG9ydGhhaXIiLCAiRG9tZXN0aWMgTWVkaXVtIEhhaXIiLCAiRG9tZXN0aWMgTG9uZ2hhaXIiLCAiQW1lcmljYW4gU2hvcnRoYWlyIikKCmNhdHNfYnlfc3BlY2lmaWNfYnJlZWQgPC0gY2F0c19ieV9icmVlZCAlPiUgCiAgZmlsdGVyKHByaW1hcnlfYnJlZWQgJW5vdCBpbiUgZXhjbHVkZV9jYXRfYnJlZWRzKSAlPiUKICBmaWx0ZXIoY291bnQgPj0gNSkKCmdncGxvdChjYXRzX2J5X3NwZWNpZmljX2JyZWVkLCBhZXMocmVvcmRlcihwcmltYXJ5X2JyZWVkLCBjb3VudCksIHkgPSBjb3VudCkpICsgZ2VvbV9jb2woKSArCiAgY29vcmRfZmxpcCgpICsKICBsYWJzKHggPSAiQnJlZWQgTmFtZSIpCmBgYAoKYGBge3J9CmRvZ3MgJT4lIAogIGdyb3VwX2J5KHByaW1hcnlfYnJlZWQsIGFuaW1hbHNfbmFtZSkgJT4lCiAgc3VtbWFyaXNlKHZhbHVlID0gbigpKSAlPiUKICBmaWx0ZXIodmFsdWUgPT0gMikgJT4lCiAgYXJyYW5nZShkZXNjKHZhbHVlKSkKYGBgCgpgYGB7cn0KR09UX25hbWVzIDwtIGMoIlR5cmlvbiIsICJKb24iLCAiQ2Vyc2VpIiwgIkRhZW5lcnlzIiwgIlNhbnNhIiwgIkFyeWEiLCAiSmFpbWUiLCAiSm9yYWgiLCAiVGhlb24iLCAiU2Ftd2VsbCIpCmBgYAoKCmBgYHtyfQpHT1RfcGV0cyA8LSBwZXRzICU+JSAKICBmaWx0ZXIoYW5pbWFsc19uYW1lICVpbiUgR09UX25hbWVzKQpgYGAKCmBgYHtyfQpHT1RfcGV0cyAlPiUgZ3JvdXBfYnkoYW5pbWFsc19uYW1lKSAlPiUgc3VtbWFyaXNlKGNvdW50ID0gbigpKSAlPiUgYXJyYW5nZShkZXNjKGNvdW50KSkKYGBgCgpgYGB7cn0KbGlicmFyeShnYW1lb2Z0aHJvbmVzKQpgYGAKYGBge3J9CmxpYnJhcnkoc2hvd3RleHQpCmZvbnRfYWRkX2dvb2dsZShuYW1lID0gIkNpbnplbCIsIGZhbWlseSA9ICJDaW56ZWwiKQpgYGAKCgoKYGBge3J9CnNob3d0ZXh0X2F1dG8oKQoKZ2dwbG90KEdPVF9wZXRzLCBhZXMoZmN0X2luZnJlcShhbmltYWxzX25hbWUpLCBmaWxsID0gc3BlY2llcykpICsgCiAgZ2VvbV9iYXIoKSArIAogIHNjYWxlX2ZpbGxfZ290X2Qob3B0aW9uID0gIlRhcmdhcnllbiIsIGRpcmVjdGlvbiA9IC0gMSkgKwogIGxhYnModGl0bGUgPSAiQSBHb2F0IE5hbWVkIEFyeWEiLCBzdWJ0aXRsZSA9ICJHYW1lIG9mIFRocm9uZXMgSW5zcGlyZWQgKE1heWJlKSBQZXQgTmFtZXMgaW4gU2VhdHRsZSIsIHggPSBlbGVtZW50X2JsYW5rKCksIHkgPSBlbGVtZW50X2JsYW5rKCksIGNhcHRpb24gPSAiQE1hcmFBbGV4ZWV2IikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gYygwLjksIDAuNikpICsKICBsYWJzKGZpbGwgPSAiUGV0IFNwZWNpZXMiKSArCiAgdGhlbWUodGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xNiwgIGZhbWlseT0iQ2luemVsIikpCiAgCmBgYAoKCgpgYGB7cn0KcGV0cyRsaWNlbnNlX2lzc3VlX2RhdGUgPC0gYXMuRGF0ZShwZXRzJGxpY2Vuc2VfaXNzdWVfZGF0ZSwgIiVCICVkICVZIikKCgpgYGAKYGBge3J9CmxpbWl0ZWQgPC0gcGV0cyAlPiUgZmlsdGVyKGxpY2Vuc2VfaXNzdWVfZGF0ZSA+IDIwMTgtMDEtMDEpCiAgCmBgYAoKCmBgYHtyfQpnZ3Bsb3QobGltaXRlZCwgYWVzKGxpY2Vuc2VfaXNzdWVfZGF0ZSkpICsgZ2VvbV9iYXIoKSArIHNjYWxlX3hfZGF0ZSgpCmBgYAoK