Import stock prices
stocks <- tq_get(c("GOOGL", "MSFT", "NVDA", "META"),
get = "stock.prices",
from = "2025-01-01")
stocks
## # A tibble: 684 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 GOOGL 2025-01-02 191. 192 188. 189. 20370800 189.
## 2 GOOGL 2025-01-03 191. 193. 190. 192. 18596200 191.
## 3 GOOGL 2025-01-06 194. 198. 194. 197. 29563600 196.
## 4 GOOGL 2025-01-07 197. 201 195. 195. 26487200 195.
## 5 GOOGL 2025-01-08 193. 196. 192. 194. 24864800 193.
## 6 GOOGL 2025-01-10 194. 197. 190. 192. 26665200 191.
## 7 GOOGL 2025-01-13 190. 191. 187. 191. 21823700 190.
## 8 GOOGL 2025-01-14 191. 192. 188. 190. 17174900 189.
## 9 GOOGL 2025-01-15 193. 196. 192. 196. 21776000 195.
## 10 GOOGL 2025-01-16 194. 195. 193. 193. 17815400 192.
## # ℹ 674 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(symbol == "MSFT", open > 150)
## # A tibble: 171 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 MSFT 2025-01-02 426. 426. 415. 419. 16896500 416.
## 2 MSFT 2025-01-03 421. 424. 420. 423. 16662900 421.
## 3 MSFT 2025-01-06 428 434. 425. 428. 20573600 426.
## 4 MSFT 2025-01-07 429 431. 421. 422. 18139100 420.
## 5 MSFT 2025-01-08 423. 427. 422. 425. 15054600 422.
## 6 MSFT 2025-01-10 425. 425. 415. 419. 20201100 417.
## 7 MSFT 2025-01-13 415. 418. 412. 417. 17604800 415.
## 8 MSFT 2025-01-14 418. 420. 411. 416. 16935900 413.
## 9 MSFT 2025-01-15 419. 428. 418. 426. 19637800 424.
## 10 MSFT 2025-01-16 429. 429. 424. 425. 15300000 422.
## # ℹ 161 more rows
Arrange rows
stocks %>%
arrange(close)
## # A tibble: 684 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NVDA 2025-04-04 98.9 100. 92.1 94.3 532273800 94.3
## 2 NVDA 2025-04-08 104. 106. 94.5 96.3 476243400 96.3
## 3 NVDA 2025-04-21 98.8 99.4 95.0 96.9 288501100 96.9
## 4 NVDA 2025-04-07 87.5 102. 86.6 97.6 611041300 97.6
## 5 NVDA 2025-04-22 98.8 99.8 97.3 98.9 241004800 98.9
## 6 NVDA 2025-04-17 104. 104. 100. 101. 292517500 101.
## 7 NVDA 2025-04-03 104. 106. 102. 102. 338769400 102.
## 8 NVDA 2025-04-23 105. 105. 102. 103. 247526000 103.
## 9 NVDA 2025-04-16 105. 107. 100. 104. 397016900 104.
## 10 NVDA 2025-04-24 103. 107. 103. 106. 220815000 106.
## # ℹ 674 more rows
Select columns
stocks %>%
filter(symbol == "META") %>%
select(symbol, date, open, high, low, close)
## # A tibble: 171 × 6
## symbol date open high low close
## <chr> <date> <dbl> <dbl> <dbl> <dbl>
## 1 META 2025-01-02 590. 605. 588. 599.
## 2 META 2025-01-03 605. 610. 596. 605.
## 3 META 2025-01-06 612. 631. 606. 630.
## 4 META 2025-01-07 632. 632. 608. 618.
## 5 META 2025-01-08 613. 616. 603. 611.
## 6 META 2025-01-10 610. 630. 597. 616.
## 7 META 2025-01-13 607. 609. 598. 608.
## 8 META 2025-01-14 605. 605. 589. 594.
## 9 META 2025-01-15 610. 622. 606. 617.
## 10 META 2025-01-16 612. 616. 610. 611.
## # ℹ 161 more rows
Add columns
stocks %>%
filter(symbol == "NVDA") %>%
mutate(daily_range = high - low)
## # A tibble: 171 × 9
## symbol date open high low close volume adjusted daily_range
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NVDA 2025-01-02 136 139. 135. 138. 198247200 138. 4.25
## 2 NVDA 2025-01-03 140. 145. 140. 144. 229322500 144. 5.17
## 3 NVDA 2025-01-06 149. 152. 148. 149. 265377400 149. 4.34
## 4 NVDA 2025-01-07 153. 153. 140. 140. 351782200 140. 13.1
## 5 NVDA 2025-01-08 143. 144. 138. 140. 227349900 140. 6.39
## 6 NVDA 2025-01-10 137. 140. 134. 136. 207602500 136. 5.70
## 7 NVDA 2025-01-13 130. 133. 130. 133. 204808900 133. 3.98
## 8 NVDA 2025-01-14 136. 136. 130. 132. 195590500 132. 6.33
## 9 NVDA 2025-01-15 134. 136. 131. 136. 185217300 136. 5.16
## 10 NVDA 2025-01-16 139. 139. 133. 134. 209235600 134. 5.26
## # ℹ 161 more rows
Summarize with groups
stocks %>%
group_by(symbol) %>%
summarize(avg_vol = mean(volume, na.rm = TRUE))
## # A tibble: 4 × 2
## symbol avg_vol
## <chr> <dbl>
## 1 GOOGL 36793530.
## 2 META 14843209.
## 3 MSFT 22180974.
## 4 NVDA 237182224.