Import stock prices
stocks <- tq_get(c("AAPL", "SONY"),
get = "stock.prices",
from = "2023-01-01",
to = "2024-01-01")
stocks
## # A tibble: 500 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AAPL 2023-01-03 130. 131. 124. 125. 112117500 123.
## 2 AAPL 2023-01-04 127. 129. 125. 126. 89113600 125.
## 3 AAPL 2023-01-05 127. 128. 125. 125. 80962700 123.
## 4 AAPL 2023-01-06 126. 130. 125. 130. 87754700 128.
## 5 AAPL 2023-01-09 130. 133. 130. 130. 70790800 128.
## 6 AAPL 2023-01-10 130. 131. 128. 131. 63896200 129.
## 7 AAPL 2023-01-11 131. 134. 130. 133. 69458900 132.
## 8 AAPL 2023-01-12 134. 134. 131. 133. 71379600 132.
## 9 AAPL 2023-01-13 132. 135. 132. 135. 57809700 133.
## 10 AAPL 2023-01-17 135. 137. 134. 136. 63646600 134.
## # ℹ 490 more rows
Plot stock prices
stocks %>%
ggplot(aes(x = date, y = adjusted, color = symbol)) +
geom_line()

Apply the dplyr verbs you learned in chapter
Filter Rows
stocks %>% filter(adjusted > 24)
## # A tibble: 250 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AAPL 2023-01-03 130. 131. 124. 125. 112117500 123.
## 2 AAPL 2023-01-04 127. 129. 125. 126. 89113600 125.
## 3 AAPL 2023-01-05 127. 128. 125. 125. 80962700 123.
## 4 AAPL 2023-01-06 126. 130. 125. 130. 87754700 128.
## 5 AAPL 2023-01-09 130. 133. 130. 130. 70790800 128.
## 6 AAPL 2023-01-10 130. 131. 128. 131. 63896200 129.
## 7 AAPL 2023-01-11 131. 134. 130. 133. 69458900 132.
## 8 AAPL 2023-01-12 134. 134. 131. 133. 71379600 132.
## 9 AAPL 2023-01-13 132. 135. 132. 135. 57809700 133.
## 10 AAPL 2023-01-17 135. 137. 134. 136. 63646600 134.
## # ℹ 240 more rows
Arrange Rows
stocks %>% arrange(symbol, open)
## # A tibble: 500 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AAPL 2023-01-06 126. 130. 125. 130. 87754700 128.
## 2 AAPL 2023-01-04 127. 129. 125. 126. 89113600 125.
## 3 AAPL 2023-01-05 127. 128. 125. 125. 80962700 123.
## 4 AAPL 2023-01-10 130. 131. 128. 131. 63896200 129.
## 5 AAPL 2023-01-03 130. 131. 124. 125. 112117500 123.
## 6 AAPL 2023-01-09 130. 133. 130. 130. 70790800 128.
## 7 AAPL 2023-01-11 131. 134. 130. 133. 69458900 132.
## 8 AAPL 2023-01-13 132. 135. 132. 135. 57809700 133.
## 9 AAPL 2023-01-12 134. 134. 131. 133. 71379600 132.
## 10 AAPL 2023-01-19 134. 136. 134. 135. 58280400 133.
## # ℹ 490 more rows
Select Columns
stocks %>% select(symbol, date, high, low)
## # A tibble: 500 × 4
## symbol date high low
## <chr> <date> <dbl> <dbl>
## 1 AAPL 2023-01-03 131. 124.
## 2 AAPL 2023-01-04 129. 125.
## 3 AAPL 2023-01-05 128. 125.
## 4 AAPL 2023-01-06 130. 125.
## 5 AAPL 2023-01-09 133. 130.
## 6 AAPL 2023-01-10 131. 128.
## 7 AAPL 2023-01-11 134. 130.
## 8 AAPL 2023-01-12 134. 131.
## 9 AAPL 2023-01-13 135. 132.
## 10 AAPL 2023-01-17 137. 134.
## # ℹ 490 more rows
Add Columns
stocks %>% mutate(close, volume)
## # A tibble: 500 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AAPL 2023-01-03 130. 131. 124. 125. 112117500 123.
## 2 AAPL 2023-01-04 127. 129. 125. 126. 89113600 125.
## 3 AAPL 2023-01-05 127. 128. 125. 125. 80962700 123.
## 4 AAPL 2023-01-06 126. 130. 125. 130. 87754700 128.
## 5 AAPL 2023-01-09 130. 133. 130. 130. 70790800 128.
## 6 AAPL 2023-01-10 130. 131. 128. 131. 63896200 129.
## 7 AAPL 2023-01-11 131. 134. 130. 133. 69458900 132.
## 8 AAPL 2023-01-12 134. 134. 131. 133. 71379600 132.
## 9 AAPL 2023-01-13 132. 135. 132. 135. 57809700 133.
## 10 AAPL 2023-01-17 135. 137. 134. 136. 63646600 134.
## # ℹ 490 more rows
Summarise with groups
stocks %>% summarise(low, high, date)
## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
## ℹ Please use `reframe()` instead.
## ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
## always returns an ungrouped data frame and adjust accordingly.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## # A tibble: 500 × 3
## low high date
## <dbl> <dbl> <date>
## 1 124. 131. 2023-01-03
## 2 125. 129. 2023-01-04
## 3 125. 128. 2023-01-05
## 4 125. 130. 2023-01-06
## 5 130. 133. 2023-01-09
## 6 128. 131. 2023-01-10
## 7 130. 134. 2023-01-11
## 8 131. 134. 2023-01-12
## 9 132. 135. 2023-01-13
## 10 134. 137. 2023-01-17
## # ℹ 490 more rows