Import stock prices

stocks <- tq_get(c("TSLA", "AMZN"),
                 get = "stock.prices",
                 from = "2016-01-01",
                 to = "2017-01-01")
stocks
## # A tibble: 504 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 TSLA   2016-01-04  15.4  15.4  14.6  14.9 102406500     14.9
##  2 TSLA   2016-01-05  15.1  15.1  14.7  14.9  47802000     14.9
##  3 TSLA   2016-01-06  14.7  14.7  14.4  14.6  56686500     14.6
##  4 TSLA   2016-01-07  14.3  14.6  14.2  14.4  53314500     14.4
##  5 TSLA   2016-01-08  14.5  14.7  14.1  14.1  54421500     14.1
##  6 TSLA   2016-01-11  14.3  14.3  13.5  13.9  61371000     13.9
##  7 TSLA   2016-01-12  14.1  14.2  13.7  14.0  46378500     14.0
##  8 TSLA   2016-01-13  14.1  14.2  13.3  13.4  61896000     13.4
##  9 TSLA   2016-01-14  13.5  14    12.9  13.7  97360500     13.7
## 10 TSLA   2016-01-15  13.3  13.7  13.1  13.7  83679000     13.7
## # ℹ 494 more rows

Plot stock prices

stocks %>%
    
    ggplot(aes(x = date, y = adjusted, color = symbol)) +
    geom_line()

Apply the dplyr verbs you learned in chapter 5

Filter rows

stocks %>% filter(adjusted > 24)
## # A tibble: 252 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 AMZN   2016-01-04  32.8  32.9  31.4  31.8 186290000     31.8
##  2 AMZN   2016-01-05  32.3  32.3  31.4  31.7 116452000     31.7
##  3 AMZN   2016-01-06  31.1  32.0  31.0  31.6 106584000     31.6
##  4 AMZN   2016-01-07  31.1  31.5  30.3  30.4 141498000     30.4
##  5 AMZN   2016-01-08  31.0  31.2  30.3  30.4 110258000     30.4
##  6 AMZN   2016-01-11  30.6  31.0  29.9  30.9  97832000     30.9
##  7 AMZN   2016-01-12  31.3  31.3  30.6  30.9  94482000     30.9
##  8 AMZN   2016-01-13  31.0  31.0  29.0  29.1 153104000     29.1
##  9 AMZN   2016-01-14  29.0  30.1  28.5  29.6 144760000     29.6
## 10 AMZN   2016-01-15  28.6  29.2  28.3  28.5 155690000     28.5
## # ℹ 242 more rows

Arrange rows

stocks %>% 
  arrange(adjusted)
## # A tibble: 504 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 TSLA   2016-02-10 10.0   10.3  9.45  9.58 156097500     9.58
##  2 TSLA   2016-02-08 10.5   10.5  9.73  9.87 139695000     9.87
##  3 TSLA   2016-02-09  9.49  10.7  9.40  9.88 129774000     9.88
##  4 TSLA   2016-02-11 10.1   10.9  9.80 10.0  213786000    10.0 
##  5 TSLA   2016-02-12 10.3   10.5  9.58 10.1  108537000    10.1 
##  6 TSLA   2016-02-16 10.6   10.9 10.3  10.3   83907000    10.3 
##  7 TSLA   2016-02-05 11.4   11.5 10.5  10.8  141564000    10.8 
##  8 TSLA   2016-02-19 10.9   11.2 10.8  11.1   44391000    11.1 
##  9 TSLA   2016-02-18 11.5   11.5 11.0  11.1   58314000    11.1 
## 10 TSLA   2016-02-17 10.6   11.3 10.4  11.2   87378000    11.2 
## # ℹ 494 more rows

Select columns

stocks %>% 
  select(date, symbol, adjusted)
## # A tibble: 504 × 3
##    date       symbol adjusted
##    <date>     <chr>     <dbl>
##  1 2016-01-04 TSLA       14.9
##  2 2016-01-05 TSLA       14.9
##  3 2016-01-06 TSLA       14.6
##  4 2016-01-07 TSLA       14.4
##  5 2016-01-08 TSLA       14.1
##  6 2016-01-11 TSLA       13.9
##  7 2016-01-12 TSLA       14.0
##  8 2016-01-13 TSLA       13.4
##  9 2016-01-14 TSLA       13.7
## 10 2016-01-15 TSLA       13.7
## # ℹ 494 more rows

Add columns

stocks %>%
  group_by(symbol) %>% 
  mutate(daily_return = adjusted / lag(adjusted) - 1) %>%
  ungroup()
## # A tibble: 504 × 9
##    symbol date        open  high   low close    volume adjusted daily_return
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>        <dbl>
##  1 TSLA   2016-01-04  15.4  15.4  14.6  14.9 102406500     14.9   NA        
##  2 TSLA   2016-01-05  15.1  15.1  14.7  14.9  47802000     14.9    0.0000895
##  3 TSLA   2016-01-06  14.7  14.7  14.4  14.6  56686500     14.6   -0.0196   
##  4 TSLA   2016-01-07  14.3  14.6  14.2  14.4  53314500     14.4   -0.0155   
##  5 TSLA   2016-01-08  14.5  14.7  14.1  14.1  54421500     14.1   -0.0216   
##  6 TSLA   2016-01-11  14.3  14.3  13.5  13.9  61371000     13.9   -0.0149   
##  7 TSLA   2016-01-12  14.1  14.2  13.7  14.0  46378500     14.0    0.0102   
##  8 TSLA   2016-01-13  14.1  14.2  13.3  13.4  61896000     13.4   -0.0460   
##  9 TSLA   2016-01-14  13.5  14    12.9  13.7  97360500     13.7    0.0293   
## 10 TSLA   2016-01-15  13.3  13.7  13.1  13.7  83679000     13.7   -0.00577  
## # ℹ 494 more rows

Sumarise with groups

 stocks %>%
  group_by(symbol) %>%
  summarise(
    avg_price = mean(adjusted, na.rm = TRUE),
    max_price = max(adjusted, na.rm = TRUE)
  )
## # A tibble: 2 × 3
##   symbol avg_price max_price
##   <chr>      <dbl>     <dbl>
## 1 AMZN        35.0      42.2
## 2 TSLA        14.0      17.7