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