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 > 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
## # … with 242 more rows
Arrange rows
arrange(stocks, desc(high), desc(low))
## # A tibble: 504 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AMZN 2016-10-06 42.2 42.4 42.0 42.1 53680000 42.1
## 2 AMZN 2016-10-07 42.3 42.3 41.9 42.0 48524000 42.0
## 3 AMZN 2016-10-05 41.9 42.3 41.8 42.2 69382000 42.2
## 4 AMZN 2016-10-10 42.2 42.3 42.0 42.1 36542000 42.1
## 5 AMZN 2016-10-25 42.0 42.2 41.7 41.8 64968000 41.8
## 6 AMZN 2016-10-04 42.0 42.1 41.5 41.7 59006000 41.7
## 7 AMZN 2016-10-11 42.1 42.1 41.4 41.5 71764000 41.5
## 8 AMZN 2016-09-30 41.6 42.0 41.6 41.9 88612000 41.9
## 9 AMZN 2016-10-03 41.8 42.0 41.6 41.8 55388000 41.8
## 10 AMZN 2016-10-24 41.2 41.9 41.1 41.9 81218000 41.9
## # … with 494 more rows
Select columns
select(stocks, date:volume)
## # A tibble: 504 × 6
## date open high low close volume
## <date> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2016-01-04 15.4 15.4 14.6 14.9 102406500
## 2 2016-01-05 15.1 15.1 14.7 14.9 47802000
## 3 2016-01-06 14.7 14.7 14.4 14.6 56686500
## 4 2016-01-07 14.3 14.6 14.2 14.4 53314500
## 5 2016-01-08 14.5 14.7 14.1 14.1 54421500
## 6 2016-01-11 14.3 14.3 13.5 13.9 61371000
## 7 2016-01-12 14.1 14.2 13.7 14.0 46378500
## 8 2016-01-13 14.1 14.2 13.3 13.4 61896000
## 9 2016-01-14 13.5 14 12.9 13.7 97360500
## 10 2016-01-15 13.3 13.7 13.2 13.7 83679000
## # … with 494 more rows
select(stocks, date, open, close)
## # A tibble: 504 × 3
## date open close
## <date> <dbl> <dbl>
## 1 2016-01-04 15.4 14.9
## 2 2016-01-05 15.1 14.9
## 3 2016-01-06 14.7 14.6
## 4 2016-01-07 14.3 14.4
## 5 2016-01-08 14.5 14.1
## 6 2016-01-11 14.3 13.9
## 7 2016-01-12 14.1 14.0
## 8 2016-01-13 14.1 13.4
## 9 2016-01-14 13.5 13.7
## 10 2016-01-15 13.3 13.7
## # … with 494 more rows
Add columns
returns <- mutate(stocks,
returns = open - close) %>%
select(returns)
Summarise with groups
stocks %>%
#Group by stock
group_by(symbol) %>%
#Calculate average returns
summarise(avg.return = mean(returns, na.rm = TRUE)) %>%
#Sort it
arrange(symbol)
## Warning in mean.default(returns, na.rm = TRUE): argument is not numeric or
## logical: returning NA
## Warning in mean.default(returns, na.rm = TRUE): argument is not numeric or
## logical: returning NA
## # A tibble: 2 × 2
## symbol avg.return
## <chr> <dbl>
## 1 AMZN NA
## 2 TSLA NA