Import stock prices
stocks <- tq_get(c("JNJ", "MSFT", "BAC"),
get = "stock.prices",
from = "2016-01-01",
to = "2018-01-01")
stocks
## # A tibble: 1,509 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 JNJ 2016-01-04 102. 102. 99.4 100. 12722800 79.7
## 2 JNJ 2016-01-05 101. 101. 101. 101. 6467200 80.1
## 3 JNJ 2016-01-06 99.8 101. 99.6 100. 7733800 79.7
## 4 JNJ 2016-01-07 99.3 100. 98.9 99.2 9433100 78.7
## 5 JNJ 2016-01-08 99.9 99.9 97.8 98.2 9766700 77.9
## 6 JNJ 2016-01-11 98.2 98.6 96.1 97.6 8151400 77.4
## 7 JNJ 2016-01-12 98.0 98.6 97.2 98.2 6745000 78.0
## 8 JNJ 2016-01-13 98.5 99.0 96.8 97.0 8290700 77.0
## 9 JNJ 2016-01-14 97.1 99.5 97 98.9 10164300 78.5
## 10 JNJ 2016-01-15 96.4 98 96.2 97 12662200 77.0
## # ℹ 1,499 more rows
Plot stock prices
stocks %>%
ggplot(aes(x = date, y = adjusted, color = symbol)) +
geom_line()

Apply the dplyr verbs learned in chapter 5
Filter Rows
stocks %>% filter(adjusted > 24)
## # A tibble: 1,028 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 JNJ 2016-01-04 102. 102. 99.4 100. 12722800 79.7
## 2 JNJ 2016-01-05 101. 101. 101. 101. 6467200 80.1
## 3 JNJ 2016-01-06 99.8 101. 99.6 100. 7733800 79.7
## 4 JNJ 2016-01-07 99.3 100. 98.9 99.2 9433100 78.7
## 5 JNJ 2016-01-08 99.9 99.9 97.8 98.2 9766700 77.9
## 6 JNJ 2016-01-11 98.2 98.6 96.1 97.6 8151400 77.4
## 7 JNJ 2016-01-12 98.0 98.6 97.2 98.2 6745000 78.0
## 8 JNJ 2016-01-13 98.5 99.0 96.8 97.0 8290700 77.0
## 9 JNJ 2016-01-14 97.1 99.5 97 98.9 10164300 78.5
## 10 JNJ 2016-01-15 96.4 98 96.2 97 12662200 77.0
## # ℹ 1,018 more rows
Arrange rows
stocks %>% arrange(adjusted > 22)
## # A tibble: 1,509 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 BAC 2016-01-04 16.5 16.5 16.2 16.4 114888000 13.7
## 2 BAC 2016-01-05 16.5 16.6 16.2 16.4 66670000 13.7
## 3 BAC 2016-01-06 16.2 16.3 16.0 16.1 102760800 13.5
## 4 BAC 2016-01-07 15.7 15.9 15.4 15.5 116255900 13.0
## 5 BAC 2016-01-08 15.9 15.9 15.2 15.2 124782400 12.7
## 6 BAC 2016-01-11 15.3 15.4 14.9 15.3 104611700 12.8
## 7 BAC 2016-01-12 15.5 15.6 15.1 15.3 100023500 12.8
## 8 BAC 2016-01-13 15.5 15.5 14.9 14.9 119413000 12.5
## 9 BAC 2016-01-14 15.0 15.2 14.6 15.0 125920000 12.5
## 10 BAC 2016-01-15 14.4 14.7 14.1 14.5 172296100 12.1
## # ℹ 1,499 more rows
Select Columns
stocks %>% select(low)
## # A tibble: 1,509 × 1
## low
## <dbl>
## 1 99.4
## 2 101.
## 3 99.6
## 4 98.9
## 5 97.8
## 6 96.1
## 7 97.2
## 8 96.8
## 9 97
## 10 96.2
## # ℹ 1,499 more rows
Add Columns
mutate(stocks,
range = high - low)
## # A tibble: 1,509 × 9
## symbol date open high low close volume adjusted range
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 JNJ 2016-01-04 102. 102. 99.4 100. 12722800 79.7 2.36
## 2 JNJ 2016-01-05 101. 101. 101. 101. 6467200 80.1 0.870
## 3 JNJ 2016-01-06 99.8 101. 99.6 100. 7733800 79.7 1.37
## 4 JNJ 2016-01-07 99.3 100. 98.9 99.2 9433100 78.7 1.21
## 5 JNJ 2016-01-08 99.9 99.9 97.8 98.2 9766700 77.9 2.09
## 6 JNJ 2016-01-11 98.2 98.6 96.1 97.6 8151400 77.4 2.55
## 7 JNJ 2016-01-12 98.0 98.6 97.2 98.2 6745000 78.0 1.39
## 8 JNJ 2016-01-13 98.5 99.0 96.8 97.0 8290700 77.0 2.14
## 9 JNJ 2016-01-14 97.1 99.5 97 98.9 10164300 78.5 2.47
## 10 JNJ 2016-01-15 96.4 98 96.2 97 12662200 77.0 1.75
## # ℹ 1,499 more rows
Summarise with groups
stocks %>%
#remove missing values
filter(!is.na(symbol))
## # A tibble: 1,509 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 JNJ 2016-01-04 102. 102. 99.4 100. 12722800 79.7
## 2 JNJ 2016-01-05 101. 101. 101. 101. 6467200 80.1
## 3 JNJ 2016-01-06 99.8 101. 99.6 100. 7733800 79.7
## 4 JNJ 2016-01-07 99.3 100. 98.9 99.2 9433100 78.7
## 5 JNJ 2016-01-08 99.9 99.9 97.8 98.2 9766700 77.9
## 6 JNJ 2016-01-11 98.2 98.6 96.1 97.6 8151400 77.4
## 7 JNJ 2016-01-12 98.0 98.6 97.2 98.2 6745000 78.0
## 8 JNJ 2016-01-13 98.5 99.0 96.8 97.0 8290700 77.0
## 9 JNJ 2016-01-14 97.1 99.5 97 98.9 10164300 78.5
## 10 JNJ 2016-01-15 96.4 98 96.2 97 12662200 77.0
## # ℹ 1,499 more rows