stocks <- tq_get(c("WMT", "F", "AAPL"),
get = "stock.prices",
from = "2016-01-01",
to = "2017-01-01")
stocks
## # A tibble: 756 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2016-01-04 20.2 20.5 20.1 20.5 35967600 17.0
## 2 WMT 2016-01-05 20.7 21.0 20.6 21.0 39978000 17.4
## 3 WMT 2016-01-06 20.8 21.3 20.8 21.2 49693800 17.5
## 4 WMT 2016-01-07 21.0 21.7 21.0 21.7 79290000 18.0
## 5 WMT 2016-01-08 21.7 21.8 21.1 21.2 53303700 17.5
## 6 WMT 2016-01-11 21.3 21.5 21.2 21.4 37961400 17.7
## 7 WMT 2016-01-12 21.5 21.6 21.1 21.2 36587700 17.6
## 8 WMT 2016-01-13 21.2 21.2 20.6 20.6 41177100 17.1
## 9 WMT 2016-01-14 20.7 21.2 20.6 21.0 38804700 17.4
## 10 WMT 2016-01-15 20.5 20.8 20.4 20.6 45523200 17.1
## # ℹ 746 more rows
stocks %>%
ggplot(aes(x = date, y = adjusted, color = symbol)) +
geom_line()
#import stock prices
stocks <- tq_get(c("WMT", "F", "AAPL"),
get = "stock.prices",
from = "2020-01-01")
stocks
## # A tibble: 5,052 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2020-01-02 39.6 40.0 39.6 39.6 20294700 36.2
## 2 WMT 2020-01-03 39.4 39.6 39.2 39.3 16197600 35.9
## 3 WMT 2020-01-06 39.1 39.4 38.9 39.2 19336500 35.8
## 4 WMT 2020-01-07 39.1 39.2 38.7 38.9 20540700 35.5
## 5 WMT 2020-01-08 38.8 38.9 38.6 38.7 17627400 35.4
## 6 WMT 2020-01-09 38.7 39.1 38.7 39.1 16691100 35.7
## 7 WMT 2020-01-10 39.1 39.1 38.7 38.8 18164400 35.4
## 8 WMT 2020-01-13 38.8 38.8 38.5 38.6 18337800 35.3
## 9 WMT 2020-01-14 38.5 38.7 38.4 38.7 19757400 35.4
## 10 WMT 2020-01-15 38.2 38.6 38.2 38.4 22362600 35.1
## # ℹ 5,042 more rows
#Plot stock prices
stocks %>%
ggplot(aes(x = date, y = adjusted, color = symbol)) +
geom_line()
# Apply the dyplr verbs you learned in chapter 5
#Filter Rows
stocks %>% filter(adjusted > 24)
## # A tibble: 3,368 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2020-01-02 39.6 40.0 39.6 39.6 20294700 36.2
## 2 WMT 2020-01-03 39.4 39.6 39.2 39.3 16197600 35.9
## 3 WMT 2020-01-06 39.1 39.4 38.9 39.2 19336500 35.8
## 4 WMT 2020-01-07 39.1 39.2 38.7 38.9 20540700 35.5
## 5 WMT 2020-01-08 38.8 38.9 38.6 38.7 17627400 35.4
## 6 WMT 2020-01-09 38.7 39.1 38.7 39.1 16691100 35.7
## 7 WMT 2020-01-10 39.1 39.1 38.7 38.8 18164400 35.4
## 8 WMT 2020-01-13 38.8 38.8 38.5 38.6 18337800 35.3
## 9 WMT 2020-01-14 38.5 38.7 38.4 38.7 19757400 35.4
## 10 WMT 2020-01-15 38.2 38.6 38.2 38.4 22362600 35.1
## # ℹ 3,358 more rows
stocks %>% filter(symbol == "WMT")
## # A tibble: 1,684 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2020-01-02 39.6 40.0 39.6 39.6 20294700 36.2
## 2 WMT 2020-01-03 39.4 39.6 39.2 39.3 16197600 35.9
## 3 WMT 2020-01-06 39.1 39.4 38.9 39.2 19336500 35.8
## 4 WMT 2020-01-07 39.1 39.2 38.7 38.9 20540700 35.5
## 5 WMT 2020-01-08 38.8 38.9 38.6 38.7 17627400 35.4
## 6 WMT 2020-01-09 38.7 39.1 38.7 39.1 16691100 35.7
## 7 WMT 2020-01-10 39.1 39.1 38.7 38.8 18164400 35.4
## 8 WMT 2020-01-13 38.8 38.8 38.5 38.6 18337800 35.3
## 9 WMT 2020-01-14 38.5 38.7 38.4 38.7 19757400 35.4
## 10 WMT 2020-01-15 38.2 38.6 38.2 38.4 22362600 35.1
## # ℹ 1,674 more rows
stocks %>% filter(adjusted > 100)
## # A tibble: 1,810 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2025-02-05 101. 103. 101. 102. 15926700 101.
## 2 WMT 2025-02-06 103. 103. 102. 103. 13088500 101.
## 3 WMT 2025-02-10 102. 103. 101. 103. 15274600 101.
## 4 WMT 2025-02-11 103. 103. 102. 102. 11953600 101.
## 5 WMT 2025-02-12 102. 104. 102. 104. 15162100 102.
## 6 WMT 2025-02-13 104 105. 104. 105. 12604400 103.
## 7 WMT 2025-02-14 105. 105. 104. 104. 14109500 102.
## 8 WMT 2025-02-18 104. 104. 103. 104. 18247300 102.
## 9 WMT 2025-02-19 104. 104. 103. 104 18508000 102.
## 10 WMT 2025-08-06 99.5 104. 99.5 103. 23738400 102.
## # ℹ 1,800 more rows
stocks %>% filter(symbol == "F" & adjusted > 150)
## # A tibble: 0 × 8
## # ℹ 8 variables: symbol <chr>, date <date>, open <dbl>, high <dbl>, low <dbl>,
## # close <dbl>, volume <dbl>, adjusted <dbl>
stocks %>% filter(symbol == "WMT" | symbol == "F")
## # A tibble: 3,368 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2020-01-02 39.6 40.0 39.6 39.6 20294700 36.2
## 2 WMT 2020-01-03 39.4 39.6 39.2 39.3 16197600 35.9
## 3 WMT 2020-01-06 39.1 39.4 38.9 39.2 19336500 35.8
## 4 WMT 2020-01-07 39.1 39.2 38.7 38.9 20540700 35.5
## 5 WMT 2020-01-08 38.8 38.9 38.6 38.7 17627400 35.4
## 6 WMT 2020-01-09 38.7 39.1 38.7 39.1 16691100 35.7
## 7 WMT 2020-01-10 39.1 39.1 38.7 38.8 18164400 35.4
## 8 WMT 2020-01-13 38.8 38.8 38.5 38.6 18337800 35.3
## 9 WMT 2020-01-14 38.5 38.7 38.4 38.7 19757400 35.4
## 10 WMT 2020-01-15 38.2 38.6 38.2 38.4 22362600 35.1
## # ℹ 3,358 more rows
#Arrange Rows
arrange(stocks, desc(date))
## # A tibble: 5,052 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2026-09-15 109. 109. 108. 108. 19316300 108.
## 2 F 2026-09-15 13.9 13.9 13.5 13.5 45801400 13.5
## 3 AAPL 2026-09-15 330. 332. 328. 331. 31748200 331.
## 4 WMT 2026-09-14 108. 110. 108 109. 23877400 109.
## 5 F 2026-09-14 13.9 13.9 13.7 13.9 31579500 13.9
## 6 AAPL 2026-09-14 335. 336. 331. 333. 39269100 333.
## 7 WMT 2026-09-11 106. 107. 106. 107. 17068600 107.
## 8 F 2026-09-11 14.1 14.1 13.9 14.0 39394600 14.0
## 9 AAPL 2026-09-11 327. 336. 326. 332. 50716900 332.
## 10 WMT 2026-09-10 106. 107. 106. 106. 17174900 106.
## # ℹ 5,042 more rows
#Select Columns
select(stocks, symbol, date, close)
## # A tibble: 5,052 × 3
## symbol date close
## <chr> <date> <dbl>
## 1 WMT 2020-01-02 39.6
## 2 WMT 2020-01-03 39.3
## 3 WMT 2020-01-06 39.2
## 4 WMT 2020-01-07 38.9
## 5 WMT 2020-01-08 38.7
## 6 WMT 2020-01-09 39.1
## 7 WMT 2020-01-10 38.8
## 8 WMT 2020-01-13 38.6
## 9 WMT 2020-01-14 38.7
## 10 WMT 2020-01-15 38.4
## # ℹ 5,042 more rows
#Add Columns
stocks %>%
mutate(daily_price_diff = open - close) %>%
select(symbol, date, daily_price_diff)
## # A tibble: 5,052 × 3
## symbol date daily_price_diff
## <chr> <date> <dbl>
## 1 WMT 2020-01-02 -0.0267
## 2 WMT 2020-01-03 0.127
## 3 WMT 2020-01-06 -0.0833
## 4 WMT 2020-01-07 0.233
## 5 WMT 2020-01-08 0.0467
## 6 WMT 2020-01-09 -0.403
## 7 WMT 2020-01-10 0.287
## 8 WMT 2020-01-13 0.167
## 9 WMT 2020-01-14 -0.237
## 10 WMT 2020-01-15 -0.217
## # ℹ 5,042 more rows
# Calculate the overnight gap using lag()
stocks %>%
mutate(prev_close = lag(close),
overnight_gap = open - prev_close) %>%
select(symbol, date, close, prev_close, open, overnight_gap)
## # A tibble: 5,052 × 6
## symbol date close prev_close open overnight_gap
## <chr> <date> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2020-01-02 39.6 NA 39.6 NA
## 2 WMT 2020-01-03 39.3 39.6 39.4 -0.223
## 3 WMT 2020-01-06 39.2 39.3 39.1 -0.163
## 4 WMT 2020-01-07 38.9 39.2 39.1 -0.130
## 5 WMT 2020-01-08 38.7 38.9 38.8 -0.0867
## 6 WMT 2020-01-09 39.1 38.7 38.7 -0.00333
## 7 WMT 2020-01-10 38.8 39.1 39.1 -0.0400
## 8 WMT 2020-01-13 38.6 38.8 38.8 0
## 9 WMT 2020-01-14 38.7 38.6 38.5 -0.137
## 10 WMT 2020-01-15 38.4 38.7 38.2 -0.517
## # ℹ 5,042 more rows
## cumsum
stocks %>%
mutate(cumulative_volume = cumsum(volume)) %>%
select(symbol, date, volume, cumulative_volume)
## # A tibble: 5,052 × 4
## symbol date volume cumulative_volume
## <chr> <date> <dbl> <dbl>
## 1 WMT 2020-01-02 20294700 20294700
## 2 WMT 2020-01-03 16197600 36492300
## 3 WMT 2020-01-06 19336500 55828800
## 4 WMT 2020-01-07 20540700 76369500
## 5 WMT 2020-01-08 17627400 93996900
## 6 WMT 2020-01-09 16691100 110688000
## 7 WMT 2020-01-10 18164400 128852400
## 8 WMT 2020-01-13 18337800 147190200
## 9 WMT 2020-01-14 19757400 166947600
## 10 WMT 2020-01-15 22362600 189310200
## # ℹ 5,042 more rows
#Summarize by Groups
stocks %>%
# Group by stock symbol
group_by(symbol) %>%
# Calculate average adjusted price
summarise(avg_price = mean(adjusted, na.rm = TRUE)) %>%
# Sort it
arrange(avg_price)
## # A tibble: 3 × 2
## symbol avg_price
## <chr> <dbl>
## 1 F 9.96
## 2 WMT 63.7
## 3 AAPL 177.