Import stock prices
stocks <- tq_get(c("TGT", "WMT", "COST"),
get = "stock.prices",
from = "2020-01-01",
to = "2023-01-01")
stocks
## # A tibble: 2,268 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 TGT 2020-01-02 129. 129. 125. 126. 5149800 114.
## 2 TGT 2020-01-03 125. 126. 124. 125. 5018500 113.
## 3 TGT 2020-01-06 124. 125. 123. 124. 4226900 112.
## 4 TGT 2020-01-07 123 124. 123 124. 3641600 112.
## 5 TGT 2020-01-08 124. 125. 123. 123. 5731600 112.
## 6 TGT 2020-01-09 124. 125. 123. 124. 5369700 112.
## 7 TGT 2020-01-10 125. 126. 124. 125. 4678000 113.
## 8 TGT 2020-01-13 125. 125. 123. 124. 3632800 112.
## 9 TGT 2020-01-14 124. 126. 123. 125. 3291900 113.
## 10 TGT 2020-01-15 117. 119. 116. 117 26743400 106.
## # ℹ 2,258 more rows
Apply the dplyr verbs you learned in chapter 5
Filter rows
stocks %>% filter(adjusted >125)
## # A tibble: 1,355 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 TGT 2020-08-17 138. 139. 137. 138. 4632300 126.
## 2 TGT 2020-08-18 137. 138. 135. 137. 5756800 126.
## 3 TGT 2020-08-19 148. 155. 147. 154. 40211800 142.
## 4 TGT 2020-08-20 155. 156. 152. 152. 12046000 140.
## 5 TGT 2020-08-21 152. 156. 152. 154. 7061400 141.
## 6 TGT 2020-08-24 154. 155. 153. 153. 4355300 141.
## 7 TGT 2020-08-25 154. 154. 152. 153. 2984400 140.
## 8 TGT 2020-08-26 153. 154. 152. 153. 3061600 140.
## 9 TGT 2020-08-27 153. 153. 150. 150. 3773100 138.
## 10 TGT 2020-08-28 150. 152. 150. 151. 2835600 139.
## # ℹ 1,345 more rows
Arrange rows
arrange(stocks, desc(date), desc(open))
## # A tibble: 2,268 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 COST 2022-12-30 455. 457. 451. 456. 1803200 442.
## 2 TGT 2022-12-30 147. 149. 147. 149. 2391100 142.
## 3 WMT 2022-12-30 47.2 47.3 46.9 47.3 11505900 46.2
## 4 COST 2022-12-29 456. 459 453. 457. 1465000 442.
## 5 TGT 2022-12-29 147. 150. 147. 148. 2829000 142.
## 6 WMT 2022-12-29 47.4 47.7 47.2 47.4 9171900 46.4
## 7 COST 2022-12-28 458. 460. 453. 453. 1324100 438.
## 8 TGT 2022-12-28 145. 147. 145. 146. 2623200 139.
## 9 WMT 2022-12-28 47.8 47.9 47.0 47.1 15246300 46.1
## 10 COST 2022-12-27 464. 465. 457. 458. 1230800 444.
## # ℹ 2,258 more rows
Select columns
select(stocks, high, low)
## # A tibble: 2,268 × 2
## high low
## <dbl> <dbl>
## 1 129. 125.
## 2 126. 124.
## 3 125. 123.
## 4 124. 123
## 5 125. 123.
## 6 125. 123.
## 7 126. 124.
## 8 125. 123.
## 9 126. 123.
## 10 119. 116.
## # ℹ 2,258 more rows
select(stocks, symbol, high, low)
## # A tibble: 2,268 × 3
## symbol high low
## <chr> <dbl> <dbl>
## 1 TGT 129. 125.
## 2 TGT 126. 124.
## 3 TGT 125. 123.
## 4 TGT 124. 123
## 5 TGT 125. 123.
## 6 TGT 125. 123.
## 7 TGT 126. 124.
## 8 TGT 125. 123.
## 9 TGT 126. 123.
## 10 TGT 119. 116.
## # ℹ 2,258 more rows
select(stocks, symbol:close)
## # A tibble: 2,268 × 6
## symbol date open high low close
## <chr> <date> <dbl> <dbl> <dbl> <dbl>
## 1 TGT 2020-01-02 129. 129. 125. 126.
## 2 TGT 2020-01-03 125. 126. 124. 125.
## 3 TGT 2020-01-06 124. 125. 123. 124.
## 4 TGT 2020-01-07 123 124. 123 124.
## 5 TGT 2020-01-08 124. 125. 123. 123.
## 6 TGT 2020-01-09 124. 125. 123. 124.
## 7 TGT 2020-01-10 125. 126. 124. 125.
## 8 TGT 2020-01-13 125. 125. 123. 124.
## 9 TGT 2020-01-14 124. 126. 123. 125.
## 10 TGT 2020-01-15 117. 119. 116. 117
## # ℹ 2,258 more rows
Add columns
mutate(stocks,
gain = high - low) %>%
select(symbol:low, gain)
## # A tibble: 2,268 × 6
## symbol date open high low gain
## <chr> <date> <dbl> <dbl> <dbl> <dbl>
## 1 TGT 2020-01-02 129. 129. 125. 3.64
## 2 TGT 2020-01-03 125. 126. 124. 1.60
## 3 TGT 2020-01-06 124. 125. 123. 1.43
## 4 TGT 2020-01-07 123 124. 123 1.43
## 5 TGT 2020-01-08 124. 125. 123. 1.91
## 6 TGT 2020-01-09 124. 125. 123. 2.25
## 7 TGT 2020-01-10 125. 126. 124. 1.65
## 8 TGT 2020-01-13 125. 125. 123. 1.75
## 9 TGT 2020-01-14 124. 126. 123. 2.22
## 10 TGT 2020-01-15 117. 119. 116. 3.84
## # ℹ 2,258 more rows
mutate(stocks,
gain = high - low) %>%
select(gain)
## # A tibble: 2,268 × 1
## gain
## <dbl>
## 1 3.64
## 2 1.60
## 3 1.43
## 4 1.43
## 5 1.91
## 6 2.25
## 7 1.65
## 8 1.75
## 9 2.22
## 10 3.84
## # ℹ 2,258 more rows
transmute(stocks,
gain = high - low)
## # A tibble: 2,268 × 1
## gain
## <dbl>
## 1 3.64
## 2 1.60
## 3 1.43
## 4 1.43
## 5 1.91
## 6 2.25
## 7 1.65
## 8 1.75
## 9 2.22
## 10 3.84
## # ℹ 2,258 more rows
select(stocks, high) %>%
mutate(high_lag1 = lag(high))
## # A tibble: 2,268 × 2
## high high_lag1
## <dbl> <dbl>
## 1 129. NA
## 2 126. 129.
## 3 125. 126.
## 4 124. 125.
## 5 125. 124.
## 6 125. 125.
## 7 126. 125.
## 8 125. 126.
## 9 126. 125.
## 10 119. 126.
## # ℹ 2,258 more rows
select(stocks, low) %>%
mutate(low_cumsum = cumsum(low))
## # A tibble: 2,268 × 2
## low low_cumsum
## <dbl> <dbl>
## 1 125. 125.
## 2 124. 249.
## 3 123. 372.
## 4 123 495.
## 5 123. 619.
## 6 123. 741.
## 7 124. 865.
## 8 123. 988.
## 9 123. 1112.
## 10 116. 1227.
## # ℹ 2,258 more rows
Summarize with groups
stocks
## # A tibble: 2,268 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 TGT 2020-01-02 129. 129. 125. 126. 5149800 114.
## 2 TGT 2020-01-03 125. 126. 124. 125. 5018500 113.
## 3 TGT 2020-01-06 124. 125. 123. 124. 4226900 112.
## 4 TGT 2020-01-07 123 124. 123 124. 3641600 112.
## 5 TGT 2020-01-08 124. 125. 123. 123. 5731600 112.
## 6 TGT 2020-01-09 124. 125. 123. 124. 5369700 112.
## 7 TGT 2020-01-10 125. 126. 124. 125. 4678000 113.
## 8 TGT 2020-01-13 125. 125. 123. 124. 3632800 112.
## 9 TGT 2020-01-14 124. 126. 123. 125. 3291900 113.
## 10 TGT 2020-01-15 117. 119. 116. 117 26743400 106.
## # ℹ 2,258 more rows
summarize(stocks, high = mean(low, na.rm = TRUE))
## # A tibble: 1 × 1
## high
## <dbl>
## 1 213.
stocks %>%
group_by(symbol) %>%
summarize(high = mean(high, na.rm = TRUE)) %>%
arrange(high)
## # A tibble: 3 × 2
## symbol high
## <chr> <dbl>
## 1 WMT 45.9
## 2 TGT 182.
## 3 COST 424.