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