Import stock prices
stocks <- tq_get(c("AMD", "VOO", "IJR", "NVDA"),
get = "stock.prices",
from = "2020-01-01")
stocks
## # A tibble: 6,736 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AMD 2020-01-02 46.9 49.2 46.6 49.1 80331100 49.1
## 2 AMD 2020-01-03 48.0 49.4 47.5 48.6 73127400 48.6
## 3 AMD 2020-01-06 48.0 48.9 47.9 48.4 47934900 48.4
## 4 AMD 2020-01-07 49.3 49.4 48.0 48.2 58061400 48.2
## 5 AMD 2020-01-08 47.8 48.3 47.1 47.8 53767000 47.8
## 6 AMD 2020-01-09 48.9 50.0 48.4 49.0 76512800 49.0
## 7 AMD 2020-01-10 49.3 49.3 48 48.2 44133700 48.2
## 8 AMD 2020-01-13 48.7 48.9 48.2 48.8 34266800 48.8
## 9 AMD 2020-01-14 48.6 49.0 47.9 48.2 38563200 48.2
## 10 AMD 2020-01-15 48.2 49.1 48.1 48.5 40199900 48.5
## # ℹ 6,726 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(close > 200)
## # A tibble: 2,006 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AMD 2024-03-01 198. 203. 195. 203. 103820800 203.
## 2 AMD 2024-03-04 205. 211. 204. 205. 86835300 205.
## 3 AMD 2024-03-05 200. 205. 199. 205. 65407100 205.
## 4 AMD 2024-03-06 210. 215. 207. 211. 86687000 211.
## 5 AMD 2024-03-07 213. 214. 208. 211. 63869000 211.
## 6 AMD 2024-03-08 213. 227. 206. 207. 120815200 207.
## 7 AMD 2024-03-12 201. 203. 194. 203. 68951700 203.
## 8 AMD 2025-10-06 226. 227. 203. 204. 248859600 204.
## 9 AMD 2025-10-07 215. 219. 209. 212. 115748100 212.
## 10 AMD 2025-10-08 213. 236. 211. 236. 159983500 236.
## # ℹ 1,996 more rows
Arrange Rows
# arrange by highest adjusted price
stocks %>% arrange(desc(adjusted))
## # A tibble: 6,736 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 VOO 2026-08-13 712. 716. 712. 715. 4590000 715.
## 2 VOO 2026-08-14 716. 716. 713. 714. 4236400 714.
## 3 VOO 2026-09-03 706. 712. 706. 711. 8585400 711.
## 4 VOO 2026-08-07 709. 711. 707. 711. 4653100 711.
## 5 VOO 2026-08-10 710. 712. 710. 711. 6689300 711.
## 6 VOO 2026-08-17 714. 714. 710. 710. 5745000 710.
## 7 VOO 2026-08-12 712. 712. 709. 710. 4919100 710.
## 8 VOO 2026-08-04 699. 711. 699. 709. 6566400 709.
## 9 VOO 2026-08-27 706. 710. 705. 709. 6745700 709.
## 10 VOO 2026-08-11 712. 712 707 708. 5169300 708.
## # ℹ 6,726 more rows
# arrange by date
stocks %>% arrange(desc(date))
## # A tibble: 6,736 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AMD 2026-09-15 502. 514. 498. 504. 17134000 504.
## 2 VOO 2026-09-15 699. 699. 695. 696. 9657900 696.
## 3 IJR 2026-09-15 141. 141. 140. 140. 3160000 140.
## 4 NVDA 2026-09-15 213. 214. 211. 212. 88059700 212.
## 5 AMD 2026-09-14 486. 498. 480. 493. 24810100 493.
## 6 VOO 2026-09-14 698. 702. 697. 699. 6801300 699.
## 7 IJR 2026-09-14 141. 142. 141. 141. 2826800 141.
## 8 NVDA 2026-09-14 211. 213. 209. 211. 132267200 211.
## 9 AMD 2026-09-11 511. 521. 501. 516. 19026200 516.
## 10 VOO 2026-09-11 703 704. 702. 703. 5792000 703.
## # ℹ 6,726 more rows
Select Columns
stocks %>% select(symbol, date, adjusted)
## # A tibble: 6,736 × 3
## symbol date adjusted
## <chr> <date> <dbl>
## 1 AMD 2020-01-02 49.1
## 2 AMD 2020-01-03 48.6
## 3 AMD 2020-01-06 48.4
## 4 AMD 2020-01-07 48.2
## 5 AMD 2020-01-08 47.8
## 6 AMD 2020-01-09 49.0
## 7 AMD 2020-01-10 48.2
## 8 AMD 2020-01-13 48.8
## 9 AMD 2020-01-14 48.2
## 10 AMD 2020-01-15 48.5
## # ℹ 6,726 more rows
Add Columns
stocks %>% mutate(price_movement = close - open) %>%
select(symbol, date, open, close, price_movement, adjusted)
## # A tibble: 6,736 × 6
## symbol date open close price_movement adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl>
## 1 AMD 2020-01-02 46.9 49.1 2.24 49.1
## 2 AMD 2020-01-03 48.0 48.6 0.570 48.6
## 3 AMD 2020-01-06 48.0 48.4 0.370 48.4
## 4 AMD 2020-01-07 49.3 48.2 -1.10 48.2
## 5 AMD 2020-01-08 47.8 47.8 -0.0200 47.8
## 6 AMD 2020-01-09 48.9 49.0 0.0300 49.0
## 7 AMD 2020-01-10 49.3 48.2 -1.09 48.2
## 8 AMD 2020-01-13 48.7 48.8 0.0900 48.8
## 9 AMD 2020-01-14 48.6 48.2 -0.430 48.2
## 10 AMD 2020-01-15 48.2 48.5 0.320 48.5
## # ℹ 6,726 more rows
Summarize with groups
stocks %>%
group_by(symbol) %>%
summarise( avg_price = mean(adjusted))
## # A tibble: 4 × 2
## symbol avg_price
## <chr> <dbl>
## 1 AMD 139.
## 2 IJR 99.5
## 3 NVDA 72.3
## 4 VOO 429.