Tidy Tuesday 15/10/2019 Big Mtcars
Data description
From From TidyTuesdays github:
This week’s data is from the EPA. The full data dictionary can be found at fueleconomy.gov.
It’s essentially a much much larger and updated dataset covering mtcars, the dataset we all know a bit too well!
H/t to Ellis Hughes who had a recent blogpost covering this dataset.
Import data and packages
library(tidyverse)
library(scales)
library(Cairo)
big_epa_cars <- read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-10-15/big_epa_cars.csv")
Data
str(big_epa_cars)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 41804 obs. of 83 variables:
## $ barrels08 : num 15.7 30 12.2 30 17.3 ...
## $ barrelsA08 : num 0 0 0 0 0 0 0 0 0 0 ...
## $ charge120 : num 0 0 0 0 0 0 0 0 0 0 ...
## $ charge240 : num 0 0 0 0 0 0 0 0 0 0 ...
## $ city08 : num 19 9 23 10 17 21 22 23 23 23 ...
## $ city08U : num 0 0 0 0 0 0 0 0 0 0 ...
## $ cityA08 : num 0 0 0 0 0 0 0 0 0 0 ...
## $ cityA08U : num 0 0 0 0 0 0 0 0 0 0 ...
## $ cityCD : num 0 0 0 0 0 0 0 0 0 0 ...
## $ cityE : num 0 0 0 0 0 0 0 0 0 0 ...
## $ cityUF : num 0 0 0 0 0 0 0 0 0 0 ...
## $ co2 : num -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ co2A : num -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ co2TailpipeAGpm: num 0 0 0 0 0 0 0 0 0 0 ...
## $ co2TailpipeGpm : num 423 808 329 808 468 ...
## $ comb08 : num 21 11 27 11 19 22 25 24 26 25 ...
## $ comb08U : num 0 0 0 0 0 0 0 0 0 0 ...
## $ combA08 : num 0 0 0 0 0 0 0 0 0 0 ...
## $ combA08U : num 0 0 0 0 0 0 0 0 0 0 ...
## $ combE : num 0 0 0 0 0 0 0 0 0 0 ...
## $ combinedCD : num 0 0 0 0 0 0 0 0 0 0 ...
## $ combinedUF : num 0 0 0 0 0 0 0 0 0 0 ...
## $ cylinders : num 4 12 4 8 4 4 4 4 4 4 ...
## $ displ : num 2 4.9 2.2 5.2 2.2 1.8 1.8 1.6 1.6 1.8 ...
## $ drive : chr "Rear-Wheel Drive" "Rear-Wheel Drive" "Front-Wheel Drive" "Rear-Wheel Drive" ...
## $ engId : num 9011 22020 2100 2850 66031 ...
## $ eng_dscr : chr "(FFS)" "(GUZZLER)" "(FFS)" NA ...
## $ feScore : num -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ fuelCost08 : num 1900 3600 1450 3600 2600 1800 1600 1650 1550 1600 ...
## $ fuelCostA08 : num 0 0 0 0 0 0 0 0 0 0 ...
## $ fuelType : chr "Regular" "Regular" "Regular" "Regular" ...
## $ fuelType1 : chr "Regular Gasoline" "Regular Gasoline" "Regular Gasoline" "Regular Gasoline" ...
## $ ghgScore : num -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ ghgScoreA : num -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ highway08 : num 25 14 33 12 23 24 29 26 31 30 ...
## $ highway08U : num 0 0 0 0 0 0 0 0 0 0 ...
## $ highwayA08 : num 0 0 0 0 0 0 0 0 0 0 ...
## $ highwayA08U : num 0 0 0 0 0 0 0 0 0 0 ...
## $ highwayCD : num 0 0 0 0 0 0 0 0 0 0 ...
## $ highwayE : num 0 0 0 0 0 0 0 0 0 0 ...
## $ highwayUF : num 0 0 0 0 0 0 0 0 0 0 ...
## $ hlv : num 0 0 19 0 0 0 0 0 0 0 ...
## $ hpv : num 0 0 77 0 0 0 0 0 0 0 ...
## $ id : num 1 10 100 1000 10000 ...
## $ lv2 : num 0 0 0 0 0 0 0 0 0 0 ...
## $ lv4 : num 0 0 0 0 14 15 15 13 13 13 ...
## $ make : chr "Alfa Romeo" "Ferrari" "Dodge" "Dodge" ...
## $ model : chr "Spider Veloce 2000" "Testarossa" "Charger" "B150/B250 Wagon 2WD" ...
## $ mpgData : chr "Y" "N" "Y" "N" ...
## $ phevBlended : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
## $ pv2 : num 0 0 0 0 0 0 0 0 0 0 ...
## $ pv4 : num 0 0 0 0 90 88 88 89 89 89 ...
## $ range : num 0 0 0 0 0 0 0 0 0 0 ...
## $ rangeCity : num 0 0 0 0 0 0 0 0 0 0 ...
## $ rangeCityA : num 0 0 0 0 0 0 0 0 0 0 ...
## $ rangeHwy : num 0 0 0 0 0 0 0 0 0 0 ...
## $ rangeHwyA : num 0 0 0 0 0 0 0 0 0 0 ...
## $ trany : chr "Manual 5-spd" "Manual 5-spd" "Manual 5-spd" "Automatic 3-spd" ...
## $ UCity : num 23.3 11 29 12.2 21 ...
## $ UCityA : num 0 0 0 0 0 0 0 0 0 0 ...
## $ UHighway : num 35 19 47 16.7 32 ...
## $ UHighwayA : num 0 0 0 0 0 0 0 0 0 0 ...
## $ VClass : chr "Two Seaters" "Two Seaters" "Subcompact Cars" "Vans" ...
## $ year : num 1985 1985 1985 1985 1993 ...
## $ youSaveSpend : num -2250 -10750 0 -10750 -5750 ...
## $ guzzler : logi NA TRUE NA NA NA NA ...
## $ trans_dscr : chr NA NA "SIL" NA ...
## $ tCharger : logi NA NA NA NA TRUE NA ...
## $ sCharger : chr NA NA NA NA ...
## $ atvType : chr NA NA NA NA ...
## $ fuelType2 : logi NA NA NA NA NA NA ...
## $ rangeA : logi NA NA NA NA NA NA ...
## $ evMotor : logi NA NA NA NA NA NA ...
## $ mfrCode : logi NA NA NA NA NA NA ...
## $ c240Dscr : logi NA NA NA NA NA NA ...
## $ charge240b : num 0 0 0 0 0 0 0 0 0 0 ...
## $ c240bDscr : logi NA NA NA NA NA NA ...
## $ createdOn : chr "Tue Jan 01 00:00:00 EST 2013" "Tue Jan 01 00:00:00 EST 2013" "Tue Jan 01 00:00:00 EST 2013" "Tue Jan 01 00:00:00 EST 2013" ...
## $ modifiedOn : chr "Tue Jan 01 00:00:00 EST 2013" "Tue Jan 01 00:00:00 EST 2013" "Tue Jan 01 00:00:00 EST 2013" "Tue Jan 01 00:00:00 EST 2013" ...
## $ startStop : logi NA NA NA NA NA NA ...
## $ phevCity : num 0 0 0 0 0 0 0 0 0 0 ...
## $ phevHwy : num 0 0 0 0 0 0 0 0 0 0 ...
## $ phevComb : num 0 0 0 0 0 0 0 0 0 0 ...
## - attr(*, "problems")=Classes 'tbl_df', 'tbl' and 'data.frame': 26930 obs. of 5 variables:
## ..$ row : int 4430 4431 4432 4433 4442 4443 4444 4448 4449 4450 ...
## ..$ col : chr "guzzler" "guzzler" "guzzler" "guzzler" ...
## ..$ expected: chr "1/0/T/F/TRUE/FALSE" "1/0/T/F/TRUE/FALSE" "1/0/T/F/TRUE/FALSE" "1/0/T/F/TRUE/FALSE" ...
## ..$ actual : chr "G" "G" "G" "G" ...
## ..$ file : chr "'https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-10-15/big_epa_cars.csv'" "'https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-10-15/big_epa_cars.csv'" "'https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-10-15/big_epa_cars.csv'" "'https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-10-15/big_epa_cars.csv'" ...
## - attr(*, "spec")=
## .. cols(
## .. barrels08 = col_double(),
## .. barrelsA08 = col_double(),
## .. charge120 = col_double(),
## .. charge240 = col_double(),
## .. city08 = col_double(),
## .. city08U = col_double(),
## .. cityA08 = col_double(),
## .. cityA08U = col_double(),
## .. cityCD = col_double(),
## .. cityE = col_double(),
## .. cityUF = col_double(),
## .. co2 = col_double(),
## .. co2A = col_double(),
## .. co2TailpipeAGpm = col_double(),
## .. co2TailpipeGpm = col_double(),
## .. comb08 = col_double(),
## .. comb08U = col_double(),
## .. combA08 = col_double(),
## .. combA08U = col_double(),
## .. combE = col_double(),
## .. combinedCD = col_double(),
## .. combinedUF = col_double(),
## .. cylinders = col_double(),
## .. displ = col_double(),
## .. drive = col_character(),
## .. engId = col_double(),
## .. eng_dscr = col_character(),
## .. feScore = col_double(),
## .. fuelCost08 = col_double(),
## .. fuelCostA08 = col_double(),
## .. fuelType = col_character(),
## .. fuelType1 = col_character(),
## .. ghgScore = col_double(),
## .. ghgScoreA = col_double(),
## .. highway08 = col_double(),
## .. highway08U = col_double(),
## .. highwayA08 = col_double(),
## .. highwayA08U = col_double(),
## .. highwayCD = col_double(),
## .. highwayE = col_double(),
## .. highwayUF = col_double(),
## .. hlv = col_double(),
## .. hpv = col_double(),
## .. id = col_double(),
## .. lv2 = col_double(),
## .. lv4 = col_double(),
## .. make = col_character(),
## .. model = col_character(),
## .. mpgData = col_character(),
## .. phevBlended = col_logical(),
## .. pv2 = col_double(),
## .. pv4 = col_double(),
## .. range = col_double(),
## .. rangeCity = col_double(),
## .. rangeCityA = col_double(),
## .. rangeHwy = col_double(),
## .. rangeHwyA = col_double(),
## .. trany = col_character(),
## .. UCity = col_double(),
## .. UCityA = col_double(),
## .. UHighway = col_double(),
## .. UHighwayA = col_double(),
## .. VClass = col_character(),
## .. year = col_double(),
## .. youSaveSpend = col_double(),
## .. guzzler = col_logical(),
## .. trans_dscr = col_character(),
## .. tCharger = col_logical(),
## .. sCharger = col_character(),
## .. atvType = col_character(),
## .. fuelType2 = col_logical(),
## .. rangeA = col_logical(),
## .. evMotor = col_logical(),
## .. mfrCode = col_logical(),
## .. c240Dscr = col_logical(),
## .. charge240b = col_double(),
## .. c240bDscr = col_logical(),
## .. createdOn = col_character(),
## .. modifiedOn = col_character(),
## .. startStop = col_logical(),
## .. phevCity = col_double(),
## .. phevHwy = col_double(),
## .. phevComb = col_double()
## .. )
big_epa_cars %>%
select(make, youSaveSpend, year, fuelType1) %>%
group_by(make) %>%
mutate(count = n()) %>%
ungroup() %>%
mutate(isSaving = factor(ifelse(
youSaveSpend > 0, "yes", "no"
), levels = c("yes", "no"))) %>%
ggplot(aes(year, youSaveSpend)) +
geom_point(aes(color = isSaving), size = .3) +
geom_smooth(se = FALSE, color = "blue3", size = .7) +
labs(
title = "Some type of fuels are more associated with economical cars",
subtitle = "Gasoline cars are moving towards bigger savings",
y = "Savings compared to an average car over 5 years",
color = "Is saving?"
) +
facet_wrap(~fuelType1)+
scale_color_manual(values = c("#01d28e", "#e25822")) +
scale_y_continuous(label = number_format(scale = 1/1000, prefix = "$",
suffix = "k")) +
guides(color = guide_legend(override.aes = list(size=1.3))) +
theme_dark() +
theme(
title = element_text(colour = "darkslategrey"),
legend.title = element_text(hjust = .5),
panel.grid = element_blank(),
legend.text = element_text(colour = "darkslategrey"),
axis.ticks = element_line(color = 'lightslategrey'),
axis.text = element_text(color = 'darkslategrey'),
axis.line = element_blank(),
axis.title.x = element_blank(),
panel.background = element_rect(fill = "grey30"),
strip.background = element_rect(fill = "grey20")
)
