Import stock prices
stocks <- tq_get(c("PYPL", "GM", "ABNB", "AXP", "NVDA", "GOOGL"),
get = "stock.prices",
from = "2016-01-01")
stocks
## # A tibble: 11,890 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 PYPL 2016-01-04 35.1 35.6 34.3 34.8 12287700 34.8
## 2 PYPL 2016-01-05 35.0 35.0 33.9 34.3 11227700 34.3
## 3 PYPL 2016-01-06 33.7 34.0 33.2 34.0 8441300 34.0
## 4 PYPL 2016-01-07 33.2 34.2 33.0 33.1 11041100 33.1
## 5 PYPL 2016-01-08 33.5 33.9 32.6 32.7 7848800 32.7
## 6 PYPL 2016-01-11 33.0 33.4 32.5 33.0 8937400 33.0
## 7 PYPL 2016-01-12 33.3 33.6 32.7 33.1 7854000 33.1
## 8 PYPL 2016-01-13 33.3 33.6 32.0 32.1 8069400 32.1
## 9 PYPL 2016-01-14 32.2 33.0 31.7 32.9 7749500 32.9
## 10 PYPL 2016-01-15 31.6 32.5 31.6 32.3 12174400 32.3
## # ℹ 11,880 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(open > 400)
## # A tibble: 0 × 8
## # ℹ 8 variables: symbol <chr>, date <date>, open <dbl>, high <dbl>, low <dbl>,
## # close <dbl>, volume <dbl>, adjusted <dbl>
Arrange rows
stocks %>%
arrange(desc(date))
## # A tibble: 11,890 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 PYPL 2024-09-13 70.0 70.6 69.9 70.1 7569300 70.1
## 2 GM 2024-09-13 46.3 47.0 46.2 46.3 8076500 46.3
## 3 ABNB 2024-09-13 118. 119. 117. 118. 3512700 118.
## 4 AXP 2024-09-13 256. 260. 256. 259 2198800 259
## 5 NVDA 2024-09-13 119. 120. 118. 119. 237763200 119.
## 6 GOOGL 2024-09-13 155. 158. 155. 157. 29563000 157.
## 7 PYPL 2024-09-12 69.1 70.4 69.0 70.4 8376700 70.4
## 8 GM 2024-09-12 44.7 46.6 44.6 46.1 14599900 46.1
## 9 ABNB 2024-09-12 116. 117. 115. 117. 3076200 117.
## 10 AXP 2024-09-12 254. 257 253. 255. 2279600 255.
## # ℹ 11,880 more rows
Select colums
stocks %>%
select(-adjusted)
## # A tibble: 11,890 × 7
## symbol date open high low close volume
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 PYPL 2016-01-04 35.1 35.6 34.3 34.8 12287700
## 2 PYPL 2016-01-05 35.0 35.0 33.9 34.3 11227700
## 3 PYPL 2016-01-06 33.7 34.0 33.2 34.0 8441300
## 4 PYPL 2016-01-07 33.2 34.2 33.0 33.1 11041100
## 5 PYPL 2016-01-08 33.5 33.9 32.6 32.7 7848800
## 6 PYPL 2016-01-11 33.0 33.4 32.5 33.0 8937400
## 7 PYPL 2016-01-12 33.3 33.6 32.7 33.1 7854000
## 8 PYPL 2016-01-13 33.3 33.6 32.0 32.1 8069400
## 9 PYPL 2016-01-14 32.2 33.0 31.7 32.9 7749500
## 10 PYPL 2016-01-15 31.6 32.5 31.6 32.3 12174400
## # ℹ 11,880 more rows
stocks %>%
select(open, close)
## # A tibble: 11,890 × 2
## open close
## <dbl> <dbl>
## 1 35.1 34.8
## 2 35.0 34.3
## 3 33.7 34.0
## 4 33.2 33.1
## 5 33.5 32.7
## 6 33.0 33.0
## 7 33.3 33.1
## 8 33.3 32.1
## 9 32.2 32.9
## 10 31.6 32.3
## # ℹ 11,880 more rows
stocks %>%
select(open, close)
## # A tibble: 11,890 × 2
## open close
## <dbl> <dbl>
## 1 35.1 34.8
## 2 35.0 34.3
## 3 33.7 34.0
## 4 33.2 33.1
## 5 33.5 32.7
## 6 33.0 33.0
## 7 33.3 33.1
## 8 33.3 32.1
## 9 32.2 32.9
## 10 31.6 32.3
## # ℹ 11,880 more rows
Add colums
stocks %>%
mutate(gap = open - close)
## # A tibble: 11,890 × 9
## symbol date open high low close volume adjusted gap
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 PYPL 2016-01-04 35.1 35.6 34.3 34.8 12287700 34.8 0.380
## 2 PYPL 2016-01-05 35.0 35.0 33.9 34.3 11227700 34.3 0.670
## 3 PYPL 2016-01-06 33.7 34.0 33.2 34.0 8441300 34.0 -0.280
## 4 PYPL 2016-01-07 33.2 34.2 33.0 33.1 11041100 33.1 0.0200
## 5 PYPL 2016-01-08 33.5 33.9 32.6 32.7 7848800 32.7 0.770
## 6 PYPL 2016-01-11 33.0 33.4 32.5 33.0 8937400 33.0 -0.0200
## 7 PYPL 2016-01-12 33.3 33.6 32.7 33.1 7854000 33.1 0.270
## 8 PYPL 2016-01-13 33.3 33.6 32.0 32.1 8069400 32.1 1.16
## 9 PYPL 2016-01-14 32.2 33.0 31.7 32.9 7749500 32.9 -0.720
## 10 PYPL 2016-01-15 31.6 32.5 31.6 32.3 12174400 32.3 -0.690
## # ℹ 11,880 more rows
Summarize with group
stocks %>%
group_by(symbol)
## # A tibble: 11,890 × 8
## # Groups: symbol [6]
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 PYPL 2016-01-04 35.1 35.6 34.3 34.8 12287700 34.8
## 2 PYPL 2016-01-05 35.0 35.0 33.9 34.3 11227700 34.3
## 3 PYPL 2016-01-06 33.7 34.0 33.2 34.0 8441300 34.0
## 4 PYPL 2016-01-07 33.2 34.2 33.0 33.1 11041100 33.1
## 5 PYPL 2016-01-08 33.5 33.9 32.6 32.7 7848800 32.7
## 6 PYPL 2016-01-11 33.0 33.4 32.5 33.0 8937400 33.0
## 7 PYPL 2016-01-12 33.3 33.6 32.7 33.1 7854000 33.1
## 8 PYPL 2016-01-13 33.3 33.6 32.0 32.1 8069400 32.1
## 9 PYPL 2016-01-14 32.2 33.0 31.7 32.9 7749500 32.9
## 10 PYPL 2016-01-15 31.6 32.5 31.6 32.3 12174400 32.3
## # ℹ 11,880 more rows