Import stock prices
stocks <- tq_get(c("SBUX", "KDP", "KO", "PEP"),
get = "stock.prices",
from = "2021-01-01")
stocks
## # A tibble: 1,704 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 SBUX 2021-01-04 108. 108. 102. 103. 8041500 99.6
## 2 SBUX 2021-01-05 103. 104. 103. 103. 5721900 100.
## 3 SBUX 2021-01-06 103. 105. 103. 104. 5017200 101.
## 4 SBUX 2021-01-07 104. 105. 103. 103. 5057000 99.9
## 5 SBUX 2021-01-08 104. 106. 103. 106. 5869700 102.
## 6 SBUX 2021-01-11 105. 106. 104. 105. 4257400 101.
## 7 SBUX 2021-01-12 104. 104. 102. 103. 4332600 99.4
## 8 SBUX 2021-01-13 102. 103. 101. 103. 4804500 99.4
## 9 SBUX 2021-01-14 104. 104. 102. 102. 4528300 98.4
## 10 SBUX 2021-01-15 101. 103. 101. 102. 5522900 98.9
## # … with 1,694 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
filter(stocks, close > 104, open > 104)
## # A tibble: 658 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 SBUX 2021-01-11 105. 106. 104. 105. 4257400 101.
## 2 SBUX 2021-01-21 105. 105. 104. 105. 5731500 101.
## 3 SBUX 2021-02-05 105. 108. 105. 106. 8072100 103.
## 4 SBUX 2021-02-08 106. 107. 105. 106. 4836600 103.
## 5 SBUX 2021-02-09 106 107. 105. 106. 4095200 103.
## 6 SBUX 2021-02-10 107. 107. 105. 106. 4293200 102.
## 7 SBUX 2021-02-11 106. 106. 105. 106. 2976000 102.
## 8 SBUX 2021-02-12 106. 106. 105. 105. 3169800 102.
## 9 SBUX 2021-02-16 105. 107. 105. 106. 4928100 103.
## 10 SBUX 2021-02-17 105. 105. 104. 104. 5733800 101.
## # … with 648 more rows
Arrange Rows
arrange(stocks, desc(date))
## # A tibble: 1,704 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 SBUX 2022-09-12 89.8 90.4 88.5 89.1 9076400 89.1
## 2 KDP 2022-09-12 38.8 39.1 38.7 39.0 5026500 39.0
## 3 KO 2022-09-12 62.4 62.8 62.3 62.5 13024000 62.5
## 4 PEP 2022-09-12 173. 174. 173. 174. 5952900 174.
## 5 SBUX 2022-09-09 89.5 89.9 88.6 88.7 7094600 88.7
## 6 KDP 2022-09-09 38.5 38.9 38.3 38.7 5260500 38.7
## 7 KO 2022-09-09 62.2 62.9 61.9 62.3 11854300 62.3
## 8 PEP 2022-09-09 173. 175. 172. 173. 3662000 173.
## 9 SBUX 2022-09-08 87.3 89.5 87.2 89.5 7721100 89.5
## 10 KDP 2022-09-08 38.3 38.5 38.0 38.5 6240400 38.5
## # … with 1,694 more rows
Select columns
select(stocks, -(symbol:date))
## # A tibble: 1,704 × 6
## open high low close volume adjusted
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 108. 108. 102. 103. 8041500 99.6
## 2 103. 104. 103. 103. 5721900 100.
## 3 103. 105. 103. 104. 5017200 101.
## 4 104. 105. 103. 103. 5057000 99.9
## 5 104. 106. 103. 106. 5869700 102.
## 6 105. 106. 104. 105. 4257400 101.
## 7 104. 104. 102. 103. 4332600 99.4
## 8 102. 103. 101. 103. 4804500 99.4
## 9 104. 104. 102. 102. 4528300 98.4
## 10 101. 103. 101. 102. 5522900 98.9
## # … with 1,694 more rows
Add columns
mutate(stocks, gain = open - close)
## # A tibble: 1,704 × 9
## symbol date open high low close volume adjusted gain
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 SBUX 2021-01-04 108. 108. 102. 103. 8041500 99.6 4.56
## 2 SBUX 2021-01-05 103. 104. 103. 103. 5721900 100. -0.520
## 3 SBUX 2021-01-06 103. 105. 103. 104. 5017200 101. -1.20
## 4 SBUX 2021-01-07 104. 105. 103. 103. 5057000 99.9 1.14
## 5 SBUX 2021-01-08 104. 106. 103. 106. 5869700 102. -1.81
## 6 SBUX 2021-01-11 105. 106. 104. 105. 4257400 101. 0.5
## 7 SBUX 2021-01-12 104. 104. 102. 103. 4332600 99.4 1.19
## 8 SBUX 2021-01-13 102. 103. 101. 103. 4804500 99.4 -0.570
## 9 SBUX 2021-01-14 104. 104. 102. 102. 4528300 98.4 1.98
## 10 SBUX 2021-01-15 101. 103. 101. 102. 5522900 98.9 -0.950
## # … with 1,694 more rows
Summarise with groups
summarise(stocks,average = mean(open, na.rm = TRUE))
## # A tibble: 1 × 1
## average
## <dbl>
## 1 88.1