Import stock prices
stocks <- tq_get(c("UAL", "AAL", "LUV"),
get = "stock.prices",
from = "2024-01-01")
stocks
## # A tibble: 1,038 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 UAL 2024-01-02 41.1 41.7 40.6 40.7 6331300 40.7
## 2 UAL 2024-01-03 40.1 40.6 39.4 39.5 9730300 39.5
## 3 UAL 2024-01-04 39.7 40.9 39.6 40.5 6913800 40.5
## 4 UAL 2024-01-05 40.4 42.0 40.3 41.8 7193900 41.8
## 5 UAL 2024-01-08 41.5 43.5 41.4 42.9 13003800 42.9
## 6 UAL 2024-01-09 43.5 44.2 43.1 43.5 9334300 43.5
## 7 UAL 2024-01-10 43.7 44.5 43.4 44.3 8337500 44.3
## 8 UAL 2024-01-11 44.1 44.5 43.4 44.5 6750300 44.5
## 9 UAL 2024-01-12 42.6 42.6 39.8 39.8 26539200 39.8
## 10 UAL 2024-01-16 39.3 39.4 38.1 38.9 13383500 38.9
## # ℹ 1,028 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: 689 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 UAL 2024-01-02 41.1 41.7 40.6 40.7 6331300 40.7
## 2 UAL 2024-01-03 40.1 40.6 39.4 39.5 9730300 39.5
## 3 UAL 2024-01-04 39.7 40.9 39.6 40.5 6913800 40.5
## 4 UAL 2024-01-05 40.4 42.0 40.3 41.8 7193900 41.8
## 5 UAL 2024-01-08 41.5 43.5 41.4 42.9 13003800 42.9
## 6 UAL 2024-01-09 43.5 44.2 43.1 43.5 9334300 43.5
## 7 UAL 2024-01-10 43.7 44.5 43.4 44.3 8337500 44.3
## 8 UAL 2024-01-11 44.1 44.5 43.4 44.5 6750300 44.5
## 9 UAL 2024-01-12 42.6 42.6 39.8 39.8 26539200 39.8
## 10 UAL 2024-01-16 39.3 39.4 38.1 38.9 13383500 38.9
## # ℹ 679 more rows
stocks %>% filter(open > 43, close > 40)
## # A tibble: 287 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 UAL 2024-01-09 43.5 44.2 43.1 43.5 9334300 43.5
## 2 UAL 2024-01-10 43.7 44.5 43.4 44.3 8337500 44.3
## 3 UAL 2024-01-11 44.1 44.5 43.4 44.5 6750300 44.5
## 4 UAL 2024-02-15 43.3 43.7 42.6 42.8 6694600 42.8
## 5 UAL 2024-02-21 43.1 44.1 42.9 44.0 9333300 44.0
## 6 UAL 2024-02-22 44.5 45.9 44.4 45.3 9335800 45.3
## 7 UAL 2024-02-23 45.1 45.8 45.0 45.5 6576100 45.5
## 8 UAL 2024-02-26 45.5 46.2 45.0 45.0 6694500 45.0
## 9 UAL 2024-02-27 45.4 45.5 44.5 44.9 6902900 44.9
## 10 UAL 2024-02-28 44.4 45.1 44.4 44.8 6146200 44.8
## # ℹ 277 more rows
stocks %>% filter(date > "2025-01-01")
## # A tibble: 282 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 UAL 2025-01-02 97.3 97.9 94.4 95.4 3429200 95.4
## 2 UAL 2025-01-03 95.4 95.7 91.8 95.7 4154500 95.7
## 3 UAL 2025-01-06 96.9 101. 96.4 98.6 7051000 98.6
## 4 UAL 2025-01-07 99 102. 98.1 101. 4995400 101.
## 5 UAL 2025-01-08 100. 104. 99.4 104. 5458200 104.
## 6 UAL 2025-01-10 109. 111. 106. 107. 14330600 107.
## 7 UAL 2025-01-13 104. 105. 102. 105. 5859000 105.
## 8 UAL 2025-01-14 107. 108. 106. 108. 5973100 108.
## 9 UAL 2025-01-15 109. 110. 105. 105. 4721200 105.
## 10 UAL 2025-01-16 105. 107. 104. 106. 4381700 106.
## # ℹ 272 more rows
Arrange rows
arrange(stocks, desc(date))
## # A tibble: 1,038 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 UAL 2025-05-19 77.9 79.6 76.7 78.6 6223500 78.6
## 2 AAL 2025-05-19 11.7 11.9 11.5 11.9 43321600 11.9
## 3 LUV 2025-05-19 32.4 32.9 32.0 32.6 10637900 32.6
## 4 UAL 2025-05-16 76.8 78.6 75.7 77.9 6423700 77.9
## 5 AAL 2025-05-16 11.8 12.0 11.7 11.9 47091000 11.9
## 6 LUV 2025-05-16 32.0 32.8 31.8 32.7 10105500 32.7
## 7 UAL 2025-05-15 78.9 79.1 76.1 76.5 9180500 76.5
## 8 AAL 2025-05-15 11.9 11.9 11.5 11.8 55977300 11.8
## 9 LUV 2025-05-15 31.5 32.0 31.3 31.9 8258800 31.9
## 10 UAL 2025-05-14 82.6 84.2 78.9 79.0 8704100 79.0
## # ℹ 1,028 more rows
Select columns
select(stocks, symbol, date, open, close)
## # A tibble: 1,038 × 4
## symbol date open close
## <chr> <date> <dbl> <dbl>
## 1 UAL 2024-01-02 41.1 40.7
## 2 UAL 2024-01-03 40.1 39.5
## 3 UAL 2024-01-04 39.7 40.5
## 4 UAL 2024-01-05 40.4 41.8
## 5 UAL 2024-01-08 41.5 42.9
## 6 UAL 2024-01-09 43.5 43.5
## 7 UAL 2024-01-10 43.7 44.3
## 8 UAL 2024-01-11 44.1 44.5
## 9 UAL 2024-01-12 42.6 39.8
## 10 UAL 2024-01-16 39.3 38.9
## # ℹ 1,028 more rows
Add columns
transmute(stocks,
change = close - open)
## # A tibble: 1,038 × 1
## change
## <dbl>
## 1 -0.410
## 2 -0.530
## 3 0.760
## 4 1.35
## 5 1.44
## 6 0.0100
## 7 0.580
## 8 0.450
## 9 -2.79
## 10 -0.360
## # ℹ 1,028 more rows
Summarize with groups
stocks %>%
group_by(symbol) %>%
summarise(avg_change = mean(open - close, na.rm = TRUE)) %>%
arrange(avg_change)
## # A tibble: 3 × 2
## symbol avg_change
## <chr> <dbl>
## 1 UAL -0.0367
## 2 LUV -0.00731
## 3 AAL 0.0126