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.2  13.7  83679000     13.7
## # … with 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 > 14)
## # A tibble: 372 × 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-03-14  14.2  14.4  14.0  14.3  60985500     14.3
##  7 TSLA   2016-03-15  14.3  14.6  14.1  14.6  47707500     14.6
##  8 TSLA   2016-03-16  14.5  14.8  14.5  14.8  52750500     14.8
##  9 TSLA   2016-03-17  14.8  15.2  14.7  15.1  56743500     15.1
## 10 TSLA   2016-03-18  15.3  15.6  15.2  15.5  70677000     15.5
## # … with 362 more rows

Arrange rows

stocks %>% arrange(stocks, desc(date), desc(close)) 
## # A tibble: 504 × 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
## # … with 494 more rows

Select columns

stocks %>% select(symbol, open, close)
## # A tibble: 504 × 3
##    symbol  open close
##    <chr>  <dbl> <dbl>
##  1 TSLA    15.4  14.9
##  2 TSLA    15.1  14.9
##  3 TSLA    14.7  14.6
##  4 TSLA    14.3  14.4
##  5 TSLA    14.5  14.1
##  6 TSLA    14.3  13.9
##  7 TSLA    14.1  14.0
##  8 TSLA    14.1  13.4
##  9 TSLA    13.5  13.7
## 10 TSLA    13.3  13.7
## # … with 494 more rows
stocks %>% select(symbol, close, volume)
## # A tibble: 504 × 3
##    symbol close    volume
##    <chr>  <dbl>     <dbl>
##  1 TSLA    14.9 102406500
##  2 TSLA    14.9  47802000
##  3 TSLA    14.6  56686500
##  4 TSLA    14.4  53314500
##  5 TSLA    14.1  54421500
##  6 TSLA    13.9  61371000
##  7 TSLA    14.0  46378500
##  8 TSLA    13.4  61896000
##  9 TSLA    13.7  97360500
## 10 TSLA    13.7  83679000
## # … with 494 more rows
stocks %>% select(symbol, high, low)
## # A tibble: 504 × 3
##    symbol  high   low
##    <chr>  <dbl> <dbl>
##  1 TSLA    15.4  14.6
##  2 TSLA    15.1  14.7
##  3 TSLA    14.7  14.4
##  4 TSLA    14.6  14.2
##  5 TSLA    14.7  14.1
##  6 TSLA    14.3  13.5
##  7 TSLA    14.2  13.7
##  8 TSLA    14.2  13.3
##  9 TSLA    14    12.9
## 10 TSLA    13.7  13.2
## # … with 494 more rows

Add columns

mutate(stocks, 
       symbol, gain = open - close) %>%
    select(symbol:open, close, gain)
## # A tibble: 504 × 5
##    symbol date        open close    gain
##    <chr>  <date>     <dbl> <dbl>   <dbl>
##  1 TSLA   2016-01-04  15.4  14.9  0.487 
##  2 TSLA   2016-01-05  15.1  14.9  0.195 
##  3 TSLA   2016-01-06  14.7  14.6  0.0640
##  4 TSLA   2016-01-07  14.3  14.4 -0.0973
##  5 TSLA   2016-01-08  14.5  14.1  0.457 
##  6 TSLA   2016-01-11  14.3  13.9  0.411 
##  7 TSLA   2016-01-12  14.1  14.0  0.109 
##  8 TSLA   2016-01-13  14.1  13.4  0.780 
##  9 TSLA   2016-01-14  13.5  13.7 -0.265 
## 10 TSLA   2016-01-15  13.3  13.7 -0.401 
## # … with 494 more rows

Summarise with groups

stocks %>%
    
    group_by(symbol) %>%
    
    summarise(stocks, return = mean(open - close), na.rm = TRUE )
## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
## ℹ Please use `reframe()` instead.
## ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
##   always returns an ungrouped data frame and adjust accordingly.
## `summarise()` has grouped output by 'symbol'. You can override using the
## `.groups` argument.
## # A tibble: 1,008 × 10
## # Groups:   symbol [2]
##    symbol date        open  high   low close    volume adjusted return na.rm
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>  <dbl> <lgl>
##  1 TSLA   2016-01-04  15.4  15.4  14.6  14.9 102406500     14.9 0.0155 TRUE 
##  2 TSLA   2016-01-05  15.1  15.1  14.7  14.9  47802000     14.9 0.0155 TRUE 
##  3 TSLA   2016-01-06  14.7  14.7  14.4  14.6  56686500     14.6 0.0155 TRUE 
##  4 TSLA   2016-01-07  14.3  14.6  14.2  14.4  53314500     14.4 0.0155 TRUE 
##  5 TSLA   2016-01-08  14.5  14.7  14.1  14.1  54421500     14.1 0.0155 TRUE 
##  6 TSLA   2016-01-11  14.3  14.3  13.5  13.9  61371000     13.9 0.0155 TRUE 
##  7 TSLA   2016-01-12  14.1  14.2  13.7  14.0  46378500     14.0 0.0155 TRUE 
##  8 TSLA   2016-01-13  14.1  14.2  13.3  13.4  61896000     13.4 0.0155 TRUE 
##  9 TSLA   2016-01-14  13.5  14    12.9  13.7  97360500     13.7 0.0155 TRUE 
## 10 TSLA   2016-01-15  13.3  13.7  13.2  13.7  83679000     13.7 0.0155 TRUE 
## # … with 998 more rows