Import stock prices
stocks <- tq_get(c("AAPL", "MSFT", "GOOG"),
get = "stock.prices",
from = "2016-01-01",
to = "2024-01-01")
stocks
## # A tibble: 6,036 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AAPL 2016-01-04 25.7 26.3 25.5 26.3 270597600 23.9
## 2 AAPL 2016-01-05 26.4 26.5 25.6 25.7 223164000 23.3
## 3 AAPL 2016-01-06 25.1 25.6 25.0 25.2 273829600 22.8
## 4 AAPL 2016-01-07 24.7 25.0 24.1 24.1 324377600 21.9
## 5 AAPL 2016-01-08 24.6 24.8 24.2 24.2 283192000 22.0
## 6 AAPL 2016-01-11 24.7 24.8 24.3 24.6 198957600 22.3
## 7 AAPL 2016-01-12 25.1 25.2 24.7 25.0 196616800 22.7
## 8 AAPL 2016-01-13 25.1 25.3 24.3 24.3 249758400 22.1
## 9 AAPL 2016-01-14 24.5 25.1 23.9 24.9 252680400 22.6
## 10 AAPL 2016-01-15 24.0 24.4 23.8 24.3 319335600 22.0
## # ℹ 6,026 more rows
Plot stock prices
stocks %>%
ggplot(aes(x = date, y = adjusted, color = symbol)) +
geom_line()

Apply the following dplyr verbs to your stock data
Filter rows
stocks %>% filter(adjusted > 24)
## # A tibble: 5,915 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AAPL 2016-03-16 26.2 26.6 26.1 26.5 153214000 24.2
## 2 AAPL 2016-03-17 26.4 26.6 26.2 26.5 137682800 24.1
## 3 AAPL 2016-03-18 26.6 26.6 26.3 26.5 176820800 24.1
## 4 AAPL 2016-03-21 26.5 26.9 26.3 26.5 142010800 24.1
## 5 AAPL 2016-03-22 26.3 26.8 26.3 26.7 129777600 24.3
## 6 AAPL 2016-03-23 26.6 26.8 26.5 26.5 102814000 24.2
## 7 AAPL 2016-03-24 26.4 26.6 26.2 26.4 104532000 24.1
## 8 AAPL 2016-03-29 26.2 26.9 26.2 26.9 124760400 24.5
## 9 AAPL 2016-03-30 27.2 27.6 27.1 27.4 182404400 25.0
## 10 AAPL 2016-03-31 27.4 27.5 27.2 27.2 103553600 24.8
## # ℹ 5,905 more rows
Arrange rows
arrange(stocks, desc(high))
## # A tibble: 6,036 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 MSFT 2023-11-29 384. 384. 377. 379. 28963400 377.
## 2 MSFT 2023-11-28 378. 383 378. 383. 20453100 381.
## 3 MSFT 2023-11-27 377. 381. 376. 379. 22179200 377.
## 4 MSFT 2023-11-30 378. 380. 375. 379. 30554400 377.
## 5 MSFT 2023-11-22 378 380. 375. 378. 23345300 376.
## 6 MSFT 2023-11-20 371. 379. 371 377. 52465100 375.
## 7 MSFT 2023-12-01 377. 378. 371. 375. 33020400 372.
## 8 MSFT 2023-11-24 377. 378. 375. 377. 10176600 375.
## 9 MSFT 2023-12-13 376. 378. 371. 374. 30955500 372.
## 10 MSFT 2023-12-29 376 377. 373. 376. 18723000 374.
## # ℹ 6,026 more rows
Select columns
select(stocks, symbol:open)
## # A tibble: 6,036 × 3
## symbol date open
## <chr> <date> <dbl>
## 1 AAPL 2016-01-04 25.7
## 2 AAPL 2016-01-05 26.4
## 3 AAPL 2016-01-06 25.1
## 4 AAPL 2016-01-07 24.7
## 5 AAPL 2016-01-08 24.6
## 6 AAPL 2016-01-11 24.7
## 7 AAPL 2016-01-12 25.1
## 8 AAPL 2016-01-13 25.1
## 9 AAPL 2016-01-14 24.5
## 10 AAPL 2016-01-15 24.0
## # ℹ 6,026 more rows
select(stocks, symbol, high, low)
## # A tibble: 6,036 × 3
## symbol high low
## <chr> <dbl> <dbl>
## 1 AAPL 26.3 25.5
## 2 AAPL 26.5 25.6
## 3 AAPL 25.6 25.0
## 4 AAPL 25.0 24.1
## 5 AAPL 24.8 24.2
## 6 AAPL 24.8 24.3
## 7 AAPL 25.2 24.7
## 8 AAPL 25.3 24.3
## 9 AAPL 25.1 23.9
## 10 AAPL 24.4 23.8
## # ℹ 6,026 more rows
Add columns
mutate(stocks,
diff = high - low) %>%
select(symbol:low, diff)
## # A tibble: 6,036 × 6
## symbol date open high low diff
## <chr> <date> <dbl> <dbl> <dbl> <dbl>
## 1 AAPL 2016-01-04 25.7 26.3 25.5 0.843
## 2 AAPL 2016-01-05 26.4 26.5 25.6 0.860
## 3 AAPL 2016-01-06 25.1 25.6 25.0 0.625
## 4 AAPL 2016-01-07 24.7 25.0 24.1 0.925
## 5 AAPL 2016-01-08 24.6 24.8 24.2 0.587
## 6 AAPL 2016-01-11 24.7 24.8 24.3 0.430
## 7 AAPL 2016-01-12 25.1 25.2 24.7 0.463
## 8 AAPL 2016-01-13 25.1 25.3 24.3 0.972
## 9 AAPL 2016-01-14 24.5 25.1 23.9 1.19
## 10 AAPL 2016-01-15 24.0 24.4 23.8 0.587
## # ℹ 6,026 more rows
Summarize by groups
stocks %>%
group_by(symbol) %>%
summarise(Ave = mean(high, low = TRUE)) %>%
arrange(Ave)
## # A tibble: 3 × 2
## symbol Ave
## <chr> <dbl>
## 1 GOOG 79.9
## 2 AAPL 91.7
## 3 MSFT 178.