Import stock prices
stocks <- tq_get(c("NVDA", "SHOP" , "TTD"),
get = "stock.prices",
from = "2025-01-01")
stocks
## # A tibble: 282 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NVDA 2025-01-02 136 139. 135. 138. 198247200 138.
## 2 NVDA 2025-01-03 140. 145. 140. 144. 229322500 144.
## 3 NVDA 2025-01-06 149. 152. 148. 149. 265377400 149.
## 4 NVDA 2025-01-07 153. 153. 140. 140. 351782200 140.
## 5 NVDA 2025-01-08 143. 144. 138. 140. 227349900 140.
## 6 NVDA 2025-01-10 137. 140. 134. 136. 207602500 136.
## 7 NVDA 2025-01-13 130. 133. 130. 133. 204808900 133.
## 8 NVDA 2025-01-14 136. 136. 130. 132. 195590500 132.
## 9 NVDA 2025-01-15 134. 136. 131. 136. 185217300 136.
## 10 NVDA 2025-01-16 139. 139. 133. 134. 209235600 134.
## # ℹ 272 more rows
Plot stock prices
stocks %>%
ggplot(aes(x = date, y = adjusted, color = symbol)) +
geom_line()

Apply the dply verbs from chapter 5
Filter Rows
stocks %>% filter(adjusted > 100)
## # A tibble: 175 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NVDA 2025-01-02 136 139. 135. 138. 198247200 138.
## 2 NVDA 2025-01-03 140. 145. 140. 144. 229322500 144.
## 3 NVDA 2025-01-06 149. 152. 148. 149. 265377400 149.
## 4 NVDA 2025-01-07 153. 153. 140. 140. 351782200 140.
## 5 NVDA 2025-01-08 143. 144. 138. 140. 227349900 140.
## 6 NVDA 2025-01-10 137. 140. 134. 136. 207602500 136.
## 7 NVDA 2025-01-13 130. 133. 130. 133. 204808900 133.
## 8 NVDA 2025-01-14 136. 136. 130. 132. 195590500 132.
## 9 NVDA 2025-01-15 134. 136. 131. 136. 185217300 136.
## 10 NVDA 2025-01-16 139. 139. 133. 134. 209235600 134.
## # ℹ 165 more rows
Arrange Rows
arrange(stocks, desc(high), desc(low))
## # A tibble: 282 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NVDA 2025-01-07 153. 153. 140. 140. 351782200 140.
## 2 NVDA 2025-01-06 149. 152. 148. 149. 265377400 149.
## 3 NVDA 2025-01-24 148. 149. 142. 143. 234657600 143.
## 4 NVDA 2025-01-22 145. 148. 144. 147. 237651400 147.
## 5 NVDA 2025-01-23 145. 147. 144. 147. 155915500 147.
## 6 NVDA 2025-01-03 140. 145. 140. 144. 229322500 144.
## 7 NVDA 2025-01-08 143. 144. 138. 140. 227349900 140.
## 8 NVDA 2025-02-18 141. 143. 138. 139. 219176600 139.
## 9 NVDA 2025-01-21 139. 142. 137. 141. 197749000 141.
## 10 NVDA 2025-02-21 140. 141. 134. 134. 228217600 134.
## # ℹ 272 more rows
Select Columns
select(stocks, date)
## # A tibble: 282 × 1
## date
## <date>
## 1 2025-01-02
## 2 2025-01-03
## 3 2025-01-06
## 4 2025-01-07
## 5 2025-01-08
## 6 2025-01-10
## 7 2025-01-13
## 8 2025-01-14
## 9 2025-01-15
## 10 2025-01-16
## # ℹ 272 more rows
select(stocks, date, high, low)
## # A tibble: 282 × 3
## date high low
## <date> <dbl> <dbl>
## 1 2025-01-02 139. 135.
## 2 2025-01-03 145. 140.
## 3 2025-01-06 152. 148.
## 4 2025-01-07 153. 140.
## 5 2025-01-08 144. 138.
## 6 2025-01-10 140. 134.
## 7 2025-01-13 133. 130.
## 8 2025-01-14 136. 130.
## 9 2025-01-15 136. 131.
## 10 2025-01-16 139. 133.
## # ℹ 272 more rows
select(stocks, date, open, close)
## # A tibble: 282 × 3
## date open close
## <date> <dbl> <dbl>
## 1 2025-01-02 136 138.
## 2 2025-01-03 140. 144.
## 3 2025-01-06 149. 149.
## 4 2025-01-07 153. 140.
## 5 2025-01-08 143. 140.
## 6 2025-01-10 137. 136.
## 7 2025-01-13 130. 133.
## 8 2025-01-14 136. 132.
## 9 2025-01-15 134. 136.
## 10 2025-01-16 139. 134.
## # ℹ 272 more rows
Add Columns
mutate(stocks,
gain = close - open) %>%
# Select days gain
select(gain)
## # A tibble: 282 × 1
## gain
## <dbl>
## 1 2.31
## 2 4.46
## 3 0.840
## 4 -12.9
## 5 -2.47
## 6 -1.54
## 7 3.24
## 8 -4.29
## 9 2.59
## 10 -5.07
## # ℹ 272 more rows
Summarize With Groups
stocks %>%
# Group by symbol
group_by(symbol) %>%
# Calculate average close price
summarise(close = mean(close, na.rm = TRUE)) %>%
# Sort it
arrange(close)
## # A tibble: 3 × 2
## symbol close
## <chr> <dbl>
## 1 TTD 78.4
## 2 SHOP 103.
## 3 NVDA 121.