Import stock prices
stocks <- tq_get(c("NVDA", "SHOP" , "TTD"),
get = "stock.prices",
from = "2023-01-01")
stocks
## # A tibble: 1,266 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NVDA 2023-01-03 14.9 15.0 14.1 14.3 401277000 14.3
## 2 NVDA 2023-01-04 14.6 14.9 14.2 14.7 431324000 14.7
## 3 NVDA 2023-01-05 14.5 14.6 14.1 14.3 389168000 14.3
## 4 NVDA 2023-01-06 14.5 15.0 14.0 14.9 405044000 14.9
## 5 NVDA 2023-01-09 15.3 16.1 15.1 15.6 504231000 15.6
## 6 NVDA 2023-01-10 15.5 16.0 15.5 15.9 384101000 15.9
## 7 NVDA 2023-01-11 15.8 16.0 15.6 16.0 353285000 16.0
## 8 NVDA 2023-01-12 16.1 16.6 15.5 16.5 551409000 16.5
## 9 NVDA 2023-01-13 16.3 16.9 16.2 16.9 447287000 16.9
## 10 NVDA 2023-01-17 16.9 17.7 16.9 17.7 511102000 17.7
## # ℹ 1,256 more rows
Apply the dply verbs from chapter 5
filter rows
stocks %>% filter(adjusted > 100)
## # A tibble: 93 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NVDA 2024-05-23 102. 106. 102. 104. 835065000 104.
## 2 NVDA 2024-05-24 104. 106. 103 106. 429494000 106.
## 3 NVDA 2024-05-28 110. 115. 110. 114. 652728000 114.
## 4 NVDA 2024-05-29 113. 115. 111. 115. 557442000 115.
## 5 NVDA 2024-05-30 115. 116. 110. 110. 487350000 110.
## 6 NVDA 2024-05-31 113. 113. 107. 110. 613263000 110.
## 7 NVDA 2024-06-03 114. 115 112. 115 438392000 115.
## 8 NVDA 2024-06-04 116. 117. 114. 116. 403324000 116.
## 9 NVDA 2024-06-05 118. 122. 117. 122. 528402000 122.
## 10 NVDA 2024-06-06 124. 126. 118. 121. 664696000 121.
## # ℹ 83 more rows
Arrange rows
arrange(stocks, desc(high), desc(low))
## # A tibble: 1,266 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NVDA 2024-06-20 140. 141. 130. 131. 517768400 131.
## 2 NVDA 2024-06-18 131. 136. 131. 136. 294335100 136.
## 3 NVDA 2024-07-11 136. 136. 127. 127. 374782700 127.
## 4 NVDA 2024-07-10 134. 135. 132. 135. 248978600 135.
## 5 NVDA 2024-07-09 130. 134. 129. 131. 285366600 131.
## 6 NVDA 2024-06-17 133. 134. 130. 131. 288504400 131.
## 7 NVDA 2024-06-14 130. 133. 128. 132. 309320400 132.
## 8 NVDA 2024-07-12 128. 132. 127. 129. 252680500 129.
## 9 NVDA 2024-07-15 131. 131. 127. 128. 208326200 128.
## 10 NVDA 2024-08-26 130. 131. 124. 126. 331964700 126.
## # ℹ 1,256 more rows
Select columns
select(stocks, date)
## # A tibble: 1,266 × 1
## date
## <date>
## 1 2023-01-03
## 2 2023-01-04
## 3 2023-01-05
## 4 2023-01-06
## 5 2023-01-09
## 6 2023-01-10
## 7 2023-01-11
## 8 2023-01-12
## 9 2023-01-13
## 10 2023-01-17
## # ℹ 1,256 more rows
select(stocks, date, high, low)
## # A tibble: 1,266 × 3
## date high low
## <date> <dbl> <dbl>
## 1 2023-01-03 15.0 14.1
## 2 2023-01-04 14.9 14.2
## 3 2023-01-05 14.6 14.1
## 4 2023-01-06 15.0 14.0
## 5 2023-01-09 16.1 15.1
## 6 2023-01-10 16.0 15.5
## 7 2023-01-11 16.0 15.6
## 8 2023-01-12 16.6 15.5
## 9 2023-01-13 16.9 16.2
## 10 2023-01-17 17.7 16.9
## # ℹ 1,256 more rows
select(stocks, date, open, close)
## # A tibble: 1,266 × 3
## date open close
## <date> <dbl> <dbl>
## 1 2023-01-03 14.9 14.3
## 2 2023-01-04 14.6 14.7
## 3 2023-01-05 14.5 14.3
## 4 2023-01-06 14.5 14.9
## 5 2023-01-09 15.3 15.6
## 6 2023-01-10 15.5 15.9
## 7 2023-01-11 15.8 16.0
## 8 2023-01-12 16.1 16.5
## 9 2023-01-13 16.3 16.9
## 10 2023-01-17 16.9 17.7
## # ℹ 1,256 more rows
Add columns
mutate(stocks,
gain = close - open) %>%
# Select days gain
select(gain)
## # A tibble: 1,266 × 1
## gain
## <dbl>
## 1 -0.536
## 2 0.182
## 3 -0.226
## 4 0.385
## 5 0.344
## 6 0.402
## 7 0.161
## 8 0.411
## 9 0.621
## 10 0.803
## # ℹ 1,256 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 NVDA 60.7
## 2 SHOP 62.3
## 3 TTD 76.3