library(tidyverse)
library(tidyquant)
library(scales)
library(tibbletime)
library(data.table)
library(rlang)
library(ggridges)
library(viridis)
library(ggbeeswarm)
library(bea.R)
library(ggthemes)
library(lubridate)
library(data.table)
library(fredr)
library(gganimate)
library(gifski)
library(tweenr)
dt<-
# data
fread('http://download.bls.gov/pub/time.series/cu/cu.data.2.Summaries') %>%
#series ids
left_join(fread("http://download.bls.gov/pub/time.series/cu/cu.series"), by="series_id") %>%
# series names
left_join(fread("http://download.bls.gov/pub/time.series/cu/cu.item"),by="item_code")
denver_cpi_2019 <- dt %>% filter(year==2019,area_code=="S48B", seasonal=="U") %>%
group_by(series_id)%>%
mutate(month=substr(period,2,3))
denver_cpi_2019 <- denver_cpi_2019 %>% group_by(series_id) %>% mutate(avg=mean(value))
denver_cpi_2019 <- distinct(denver_cpi_2019, series_id, .keep_all = TRUE)
denver_cpi_2019 <- denver_cpi_2019 %>% filter(period=="M01")
denver_cpi_2019$value <- denver_cpi_2019$avg
denver_cpi_2019 <- denver_cpi_2019[,-23]
denver_cpi_2019$period <- "S03"
denver_cpi <- dt %>% filter(year>2000,area_code=="S48B", seasonal=="U", period=="S03") %>%
group_by(series_id)%>%
mutate(month=substr(period,2,3))
denver_cpi <- rbind(denver_cpi, denver_cpi_2019)
denver_cpi<- denver_cpi %>% group_by(item_name) %>% mutate(y=100*value/value[year==2001&period=="S03"],
date=as.Date(ISOdate(year,as.numeric(substr(period,2,3)),1) ) ) %>%
ungroup()
a <-
ggplot(data=denver_cpi,aes(x=date,y=y,color=item_code,label=item_name))+
geom_line()+
geom_text(hjust=1)+
theme(legend.position="none")+
scale_y_log10(breaks=c(75,100,125,150,175))+
scale_x_date(date_breaks="1 year", date_labels="%Y")+
labs(caption="Source: U.S. Bureau of Labor Statistics, Annual,not seasonally adjusted indexes. 2019 values are average through Septempber",
title="Consumer Prices in the Denver-Aurora-Lakewood,CO Metro Area",
subtitle="Consumer Price index for All Urban Consumers (CPI-U) special aggregate indexes\nlog scale, Jan 2001=100",
y="")+
theme(plot.title=element_text(face="bold"),
plot.caption=element_text(hjust=0))+
transition_reveal(date)
animate(a,end_pause=20)
What about over the last year?
dt<-
# data
fread('http://download.bls.gov/pub/time.series/cu/cu.data.2.Summaries') %>%
#series ids
left_join(fread("http://download.bls.gov/pub/time.series/cu/cu.series"), by="series_id") %>%
# series names
left_join(fread("http://download.bls.gov/pub/time.series/cu/cu.item"),by="item_code")
denver_cpi <- dt %>% filter(year>2017,area_code=="S48B", seasonal=="U") %>%
group_by(series_id)%>%
mutate(month=substr(period,2,3))
denver_cpi <- denver_cpi[-c(133:176),]
denver_cpi<-denver_cpi[!grepl("M13", denver_cpi$period),]
denver_cpi <- denver_cpi %>% arrange(year) %>% arrange(item_name)
denver_cpi <- denver_cpi %>% group_by(item_name) %>% mutate(yoy=value/lag(value)-1)
denver_cpi$yoy <- denver_cpi$yoy*100
denver_cpi<- denver_cpi %>%group_by(year) %>% group_by(item_name) %>% mutate(
date=as.Date(ISOdate(year,as.numeric(substr(period,2,3)),1) ) ) %>%
ungroup()
d.list <- unique(denver_cpi$date)
d.list2 <- unique(denver_cpi$date)
denver_cpi<-denver_cpi[!(is.na(denver_cpi$yoy)),]
ggplot(data=denver_cpi,aes(x=date,y=yoy,color=item_name))+
facet_wrap(~item_name,scales="free_y")+
geom_line()+
geom_ribbon(alpha=0.5,aes(ymin=0,ymax=yoy,fill=item_name),color=NA)+
geom_line(size=0.5)+
theme_minimal(base_size=8)+theme(legend.position="none")+
scale_x_date(limits=c(min(d.list),max(d.list2)))+
theme(plot.caption=element_text(hjust=0))+
labs(x="", y="Percent Change",
subtitle=paste("by major category (% change from 2 months prior, not seasonally adjusted. As of ",
as.character(last(d.list2),format="%b-%Y")),
title="Denver-Aurora-Lakewood,CO Metro Area Consumer Prices since 2018",
caption="Source: U.S. Bureau of Labor Statistics, not seasonally adjusted ")+
theme(plot.title=element_text(face="bold"),
plot.caption=element_text(hjust=0))