--- title: "Pivot_Wider and Pivot_Longer" author: "Prof. Eric A. Suess" date: "Today's Date" output: html_document: toc: yes toc:float: yes pdf_document: toc: yes params: symbol1: GM symbol2: F symbol3: TWTR --- # Introduction: {.sidebar} ```{r message=FALSE} library(tidyverse) library(lubridate) library(quantmod) library(BatchGetSymbols) ``` ### Nice Example: {.sidebar} Here is a nice example from the [tidyr](https://tidyr.tidyverse.org/reference/spread.html) website. ```{r} set.seed(12345) stocks <- data_frame( time = ymd('2009-01-01') + 0:9, # ymd() is from the lubridate package X = rnorm(10, 0, 1), Y = rnorm(10, 0, 2), Z = rnorm(10, 0, 4) ) stocks ``` ```{r} stocksm <- stocks %>% pivot_longer(-time, names_to = "stock", values_to = "price" ) %>% arrange(stock) stocksm ``` ```{r} stocksm %>% pivot_wider( names_from = stock, values_from = price ) ``` ```{r} stocksm %>% pivot_wider( names_from = time, values_from = price ) ``` # Download some stock market data. Nice and tidy? Yes or No? Using [quantmod](http://www.quantmod.com/) ```{r} library(quantmod) ``` This report examines the price of three stocks. - print(params$symbol1) - params$symbol2 - params$symbol3 ```{r} getSymbols(params$symbol1, src="yahoo") # from yahoo finance ``` ```{r} stock01 <- getSymbols(params$symbol1, auto.assign = FALSE, src="yahoo") barChart(stock01) ``` ```{r} stock01 %>% head() ``` We will use the [BatchGetSymbols](https://cran.r-project.org/web/packages/BatchGetSymbols/vignettes/BatchGetSymbols-vignette.html) R package to download stock market data. ```{r} library(BatchGetSymbols) ``` ```{r} # set dates first.date <- Sys.Date() - 30 last.date <- Sys.Date() # set tickers tickers <- params l.out <- BatchGetSymbols(tickers = tickers, first.date = first.date, last.date = last.date, cache.folder = file.path(tempdir(), 'BGS_Cache') ) # cache in tempdir() ``` ```{r} print(l.out$df.control) ``` Is the data in a tidy format? ```{r} print(l.out$df.tickers) ``` ```{r} l.out$df.tickers %>% ggplot(aes(x = ref.date, y = price.close)) + geom_line() + facet_wrap(~ticker, scales = 'free_y') ```