Import stock prices
stocks <- tq_get(c("X", "CMC", "ZEUS"),
get = "stock.prices",
from = "2024-01-01")
stocks
## # A tibble: 522 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 X 2024-01-02 48.5 48.6 47.9 48.0 6317700 47.8
## 2 X 2024-01-03 47.7 48.5 47.6 47.8 7197400 47.7
## 3 X 2024-01-04 48.1 48.3 47.8 47.9 6405100 47.7
## 4 X 2024-01-05 48.0 48.4 47.8 48.3 4029000 48.2
## 5 X 2024-01-08 48.2 48.7 48.2 48.5 3219900 48.3
## 6 X 2024-01-09 48.4 48.7 48.3 48.4 7234500 48.2
## 7 X 2024-01-10 48.3 48.5 48.2 48.3 3399000 48.1
## 8 X 2024-01-11 48.2 48.4 46.5 47.7 7808800 47.6
## 9 X 2024-01-12 47.9 48 47.3 47.4 4210300 47.2
## 10 X 2024-01-16 47.4 47.6 47.0 47.2 3078600 47.1
## # ℹ 512 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
filter(stocks, high < 50)
## # A tibble: 238 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 X 2024-01-02 48.5 48.6 47.9 48.0 6317700 47.8
## 2 X 2024-01-03 47.7 48.5 47.6 47.8 7197400 47.7
## 3 X 2024-01-04 48.1 48.3 47.8 47.9 6405100 47.7
## 4 X 2024-01-05 48.0 48.4 47.8 48.3 4029000 48.2
## 5 X 2024-01-08 48.2 48.7 48.2 48.5 3219900 48.3
## 6 X 2024-01-09 48.4 48.7 48.3 48.4 7234500 48.2
## 7 X 2024-01-10 48.3 48.5 48.2 48.3 3399000 48.1
## 8 X 2024-01-11 48.2 48.4 46.5 47.7 7808800 47.6
## 9 X 2024-01-12 47.9 48 47.3 47.4 4210300 47.2
## 10 X 2024-01-16 47.4 47.6 47.0 47.2 3078600 47.1
## # ℹ 228 more rows
filter(stocks, low < 50 )
## # A tibble: 263 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 X 2024-01-02 48.5 48.6 47.9 48.0 6317700 47.8
## 2 X 2024-01-03 47.7 48.5 47.6 47.8 7197400 47.7
## 3 X 2024-01-04 48.1 48.3 47.8 47.9 6405100 47.7
## 4 X 2024-01-05 48.0 48.4 47.8 48.3 4029000 48.2
## 5 X 2024-01-08 48.2 48.7 48.2 48.5 3219900 48.3
## 6 X 2024-01-09 48.4 48.7 48.3 48.4 7234500 48.2
## 7 X 2024-01-10 48.3 48.5 48.2 48.3 3399000 48.1
## 8 X 2024-01-11 48.2 48.4 46.5 47.7 7808800 47.6
## 9 X 2024-01-12 47.9 48 47.3 47.4 4210300 47.2
## 10 X 2024-01-16 47.4 47.6 47.0 47.2 3078600 47.1
## # ℹ 253 more rows
Arrange rows
stocks %>%
arrange(symbol, high, adjusted)
## # A tibble: 522 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 CMC 2024-01-05 48.0 48.8 47.8 48.2 1240800 47.8
## 2 CMC 2024-01-04 49.2 49.2 48.2 48.3 1050300 47.8
## 3 CMC 2024-09-10 49.3 49.5 48.4 49.1 711700 49.1
## 4 CMC 2024-01-10 49.1 49.7 49.0 49.4 1601500 48.9
## 5 CMC 2024-01-03 49.6 49.8 48.9 48.9 1087100 48.5
## 6 CMC 2024-01-17 48.8 50.3 48.7 50.1 950300 49.8
## 7 CMC 2024-01-16 50.0 50.3 49.7 49.8 1246400 49.3
## 8 CMC 2024-09-09 50.2 50.5 49.3 49.3 668700 49.3
## 9 CMC 2024-01-19 50.3 50.5 49.0 49.9 1200500 49.6
## 10 CMC 2024-06-14 50.5 50.5 49.8 50.4 738700 50.2
## # ℹ 512 more rows
Select columns
stocks %>%
select(date, symbol, high, low)
## # A tibble: 522 × 4
## date symbol high low
## <date> <chr> <dbl> <dbl>
## 1 2024-01-02 X 48.6 47.9
## 2 2024-01-03 X 48.5 47.6
## 3 2024-01-04 X 48.3 47.8
## 4 2024-01-05 X 48.4 47.8
## 5 2024-01-08 X 48.7 48.2
## 6 2024-01-09 X 48.7 48.3
## 7 2024-01-10 X 48.5 48.2
## 8 2024-01-11 X 48.4 46.5
## 9 2024-01-12 X 48 47.3
## 10 2024-01-16 X 47.6 47.0
## # ℹ 512 more rows
Add columns
mutate(stocks,
day_change = open - close)
## # A tibble: 522 × 9
## symbol date open high low close volume adjusted day_change
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 X 2024-01-02 48.5 48.6 47.9 48.0 6317700 47.8 0.540
## 2 X 2024-01-03 47.7 48.5 47.6 47.8 7197400 47.7 -0.150
## 3 X 2024-01-04 48.1 48.3 47.8 47.9 6405100 47.7 0.160
## 4 X 2024-01-05 48.0 48.4 47.8 48.3 4029000 48.2 -0.400
## 5 X 2024-01-08 48.2 48.7 48.2 48.5 3219900 48.3 -0.290
## 6 X 2024-01-09 48.4 48.7 48.3 48.4 7234500 48.2 -0.0100
## 7 X 2024-01-10 48.3 48.5 48.2 48.3 3399000 48.1 0.0200
## 8 X 2024-01-11 48.2 48.4 46.5 47.7 7808800 47.6 0.420
## 9 X 2024-01-12 47.9 48 47.3 47.4 4210300 47.2 0.480
## 10 X 2024-01-16 47.4 47.6 47.0 47.2 3078600 47.1 0.190
## # ℹ 512 more rows
Summarize with groups
summarise(stocks, avg_price = mean(close, na.rm =TRUE))
## # A tibble: 1 × 1
## avg_price
## <dbl>
## 1 50.5
# average price per stock
stocks %>%
group_by(symbol) %>%
summarise(avg_price = mean(close))
## # A tibble: 3 × 2
## symbol avg_price
## <chr> <dbl>
## 1 CMC 54.2
## 2 X 40.9
## 3 ZEUS 56.5