Import stock prices

tickers = c("NFLX", "AAPL", "AMZN", "K", "O")

prices <- tq_get(tickers,
                 from = "2017-01-01",
                 to = "2017-03-01",
                 get = "stock.prices")

Plot stock prices

prices %>%
  ggplot(aes(x = date, y = adjusted, color = symbol)) +
  geom_line() +
  facet_wrap(~symbol,scales = 'free_y') +
  theme_classic() +
  labs(x = 'Date',
       y = "Adjusted Price",
       title = "Price Chart") +
  scale_x_date(date_breaks = "month",
               date_labels = "%b\n%y")

Apply the dplyr verbs you learned in chapter 5

filter rows

prices %>%
    filter(adjusted > 31)
## # A tibble: 169 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 NFLX   2017-01-03  125.  128.  124.  127.  9437900     127.
##  2 NFLX   2017-01-04  127.  130.  127.  129.  7843600     129.
##  3 NFLX   2017-01-05  129.  133.  129.  132. 10185500     132.
##  4 NFLX   2017-01-06  132.  134.  130.  131. 10657900     131.
##  5 NFLX   2017-01-09  131.  132.  130.  131.  5771800     131.
##  6 NFLX   2017-01-10  131.  132.  129.  130.  5985800     130.
##  7 NFLX   2017-01-11  131.  132.  129.  130.  5615100     130.
##  8 NFLX   2017-01-12  131.  131.  128.  129.  5388900     129.
##  9 NFLX   2017-01-13  131.  134.  131.  134. 10515000     134.
## 10 NFLX   2017-01-17  135.  135.  132.  133. 12220200     133.
## # … with 159 more rows

arrange rows

prices %>% arrange(prices, desc(date), desc(close))
## # A tibble: 195 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 AAPL   2017-01-03  29.0  29.1  28.7  29.0 115127600     27.2
##  2 AAPL   2017-01-04  29.0  29.1  28.9  29.0  84472400     27.1
##  3 AAPL   2017-01-05  29.0  29.2  29.0  29.2  88774400     27.3
##  4 AAPL   2017-01-06  29.2  29.5  29.1  29.5 127007600     27.6
##  5 AAPL   2017-01-09  29.5  29.9  29.5  29.7 134247600     27.8
##  6 AAPL   2017-01-10  29.7  29.8  29.6  29.8  97848400     27.9
##  7 AAPL   2017-01-11  29.7  30.0  29.6  29.9 110354400     28.0
##  8 AAPL   2017-01-12  29.7  29.8  29.6  29.8 108344800     27.9
##  9 AAPL   2017-01-13  29.8  29.9  29.7  29.8 104447600     27.9
## 10 AAPL   2017-01-17  29.6  30.1  29.6  30   137759200     28.1
## # … with 185 more rows

select columns

prices %>% select(symbol, open, close)
## # A tibble: 195 × 3
##    symbol  open close
##    <chr>  <dbl> <dbl>
##  1 NFLX    125.  127.
##  2 NFLX    127.  129.
##  3 NFLX    129.  132.
##  4 NFLX    132.  131.
##  5 NFLX    131.  131.
##  6 NFLX    131.  130.
##  7 NFLX    131.  130.
##  8 NFLX    131.  129.
##  9 NFLX    131.  134.
## 10 NFLX    135.  133.
## # … with 185 more rows
prices %>% select(symbol, close, volume)
## # A tibble: 195 × 3
##    symbol close   volume
##    <chr>  <dbl>    <dbl>
##  1 NFLX    127.  9437900
##  2 NFLX    129.  7843600
##  3 NFLX    132. 10185500
##  4 NFLX    131. 10657900
##  5 NFLX    131.  5771800
##  6 NFLX    130.  5985800
##  7 NFLX    130.  5615100
##  8 NFLX    129.  5388900
##  9 NFLX    134. 10515000
## 10 NFLX    133. 12220200
## # … with 185 more rows
prices %>% select(symbol, high, low)
## # A tibble: 195 × 3
##    symbol  high   low
##    <chr>  <dbl> <dbl>
##  1 NFLX    128.  124.
##  2 NFLX    130.  127.
##  3 NFLX    133.  129.
##  4 NFLX    134.  130.
##  5 NFLX    132.  130.
##  6 NFLX    132.  129.
##  7 NFLX    132.  129.
##  8 NFLX    131.  128.
##  9 NFLX    134.  131.
## 10 NFLX    135.  132.
## # … with 185 more rows

Add columns

mutate(prices,
       symbol, gain = open - close) %>%
    select(symbol:open, close, gain)
## # A tibble: 195 × 5
##    symbol date        open close   gain
##    <chr>  <date>     <dbl> <dbl>  <dbl>
##  1 NFLX   2017-01-03  125.  127. -2.53 
##  2 NFLX   2017-01-04  127.  129. -1.92 
##  3 NFLX   2017-01-05  129.  132. -2.59 
##  4 NFLX   2017-01-06  132.  131.  1.01 
##  5 NFLX   2017-01-09  131.  131.  0.530
##  6 NFLX   2017-01-10  131.  130.  1.38 
##  7 NFLX   2017-01-11  131.  130.  0.410
##  8 NFLX   2017-01-12  131.  129.  1.45 
##  9 NFLX   2017-01-13  131.  134. -2.55 
## 10 NFLX   2017-01-17  135.  133.  2.15 
## # … with 185 more rows

Summarise with groups

prices %>%
    
    group_by(symbol) %>%
    
    reframe(prices, return = mean(open - close), na.rm = TRUE)
## # A tibble: 975 × 10
##    symbol date        open  high   low close   volume adjusted  return na.rm
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>   <dbl> <lgl>
##  1 NFLX   2017-01-03  125.  128.  124.  127.  9437900     127. -0.0785 TRUE 
##  2 NFLX   2017-01-04  127.  130.  127.  129.  7843600     129. -0.0785 TRUE 
##  3 NFLX   2017-01-05  129.  133.  129.  132. 10185500     132. -0.0785 TRUE 
##  4 NFLX   2017-01-06  132.  134.  130.  131. 10657900     131. -0.0785 TRUE 
##  5 NFLX   2017-01-09  131.  132.  130.  131.  5771800     131. -0.0785 TRUE 
##  6 NFLX   2017-01-10  131.  132.  129.  130.  5985800     130. -0.0785 TRUE 
##  7 NFLX   2017-01-11  131.  132.  129.  130.  5615100     130. -0.0785 TRUE 
##  8 NFLX   2017-01-12  131.  131.  128.  129.  5388900     129. -0.0785 TRUE 
##  9 NFLX   2017-01-13  131.  134.  131.  134. 10515000     134. -0.0785 TRUE 
## 10 NFLX   2017-01-17  135.  135.  132.  133. 12220200     133. -0.0785 TRUE 
## # … with 965 more rows