---
title: "Stats by Year"
output:
  html_notebook: default

---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
require(tidyverse) # i think this gives me dplyr and tidyr
require(janitor) # clean names
require(ggplot2) # data viz
require(ggcorrplot) #cor matrix and plots
require(ivreg) # two stage least squares regression
require(kableExtra) # tables
require(plotly) # interactive viz for presentation
```


```{r Interactive Plot, echo=FALSE, warning=FALSE}
SBY <- read.csv("X1.csv") %>% 
  clean_names()
SBY <- SBY %>% select(i_time1, hur, taxcorp) %>% 
  group_by(i_time1) %>% 
  drop_na() %>% 
  summarize(mean_ur=mean(hur), mean_tc = mean(taxcorp), 
            max_ur = max(hur), min_ur = min(hur), max_tc= max(taxcorp), min_tc =min(taxcorp),
            sd_ur = sd(hur), sd_tc = sd(taxcorp))

colors <- c("Unemployment Rate" = "#F10E5B", "Corporate Tax Revenue" = "#0EF1A4")
Trend1F <- ggplot(SBY, aes(x=i_time1 ))+
  geom_line(aes(y=mean_ur,color = "Unemployment Rate",
                group = 1, 
                text = paste("Year: ", i_time1,
                             "<br>Mean: ", round(mean_ur, 2),
                             "<br>Max: ", round(max_ur, 2),
                             "<br>Min: ", round(min_ur, 2),
                             "<br>SD: ", round(sd_ur, 2)
                )
                            ))+
  geom_line(aes(y=mean_tc,color ="Corporate Tax Revenue",
                group = 1,
                text = paste("Year: ", i_time1,
                             "<br>Mean: ", round(mean_tc, 2),
                             "<br>Max: ", round(max_tc, 2),
                             "<br>Min: ", round(min_tc, 2),
                             "<br>SD: ", round(sd_tc, 2)
                  
                )))+
  labs(x="Year", y="Mean %", color = "Legend",
       title = "Figure 2 (Modified): Means by Year, Overall",
       subtitle = "32 OECD Countries from 2001-2019 N=357", 
       caption = "Chart by Josiah Nelson, Data: OECD 2022a, OECD 2022b")+
  scale_color_manual(values = colors)+
  ylim(0,10)
ggplotly(Trend1F, tooltip = "text")
```



