Import stock prices
stocks <- tq_get(c("WMT", "GM", "MSFT"),
get = "stock.prices",
from = "2016-01-01")
stocks
## # A tibble: 7,476 × 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.1
## 2 WMT 2016-01-05 20.7 21.0 20.6 21.0 39978000 17.5
## 3 WMT 2016-01-06 20.8 21.3 20.8 21.2 49693800 17.7
## 4 WMT 2016-01-07 21.0 21.7 21.0 21.7 79290000 18.1
## 5 WMT 2016-01-08 21.7 21.8 21.1 21.2 53303700 17.7
## 6 WMT 2016-01-11 21.3 21.5 21.2 21.4 37961400 17.9
## 7 WMT 2016-01-12 21.5 21.6 21.1 21.2 36587700 17.7
## 8 WMT 2016-01-13 21.2 21.2 20.6 20.6 41177100 17.2
## 9 WMT 2016-01-14 20.7 21.2 20.6 21.0 38804700 17.6
## 10 WMT 2016-01-15 20.5 20.8 20.4 20.6 45523200 17.2
## # ℹ 7,466 more rows
Plot stock prices
stocks %>%
ggplot(aes(x = date, y = adjusted, color = symbol)) +
geom_line()

Apply the following dplyr verbs to your stock data
Filter rows
stocks %>% filter(adjusted > 24)
## # A tibble: 6,935 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2017-10-10 27.6 28.3 27.5 28.0 75372000 24.6
## 2 WMT 2017-10-11 28.2 28.8 28.0 28.6 55683000 25.1
## 3 WMT 2017-10-12 28.6 28.8 28.4 28.7 38631000 25.2
## 4 WMT 2017-10-13 28.7 29.0 28.7 28.9 28167000 25.3
## 5 WMT 2017-10-16 28.9 28.9 28.3 28.6 27900900 25.1
## 6 WMT 2017-10-17 28.5 28.8 28.4 28.7 17554500 25.1
## 7 WMT 2017-10-18 28.7 28.8 28.7 28.7 16416300 25.2
## 8 WMT 2017-10-19 28.7 28.9 28.6 28.8 21087000 25.3
## 9 WMT 2017-10-20 28.9 29.1 28.8 29.1 22853400 25.6
## 10 WMT 2017-10-23 29.1 29.6 29.1 29.5 31758000 25.9
## # ℹ 6,925 more rows
Arrange rows
stocks %>% arrange(open, desc(high), low)
## # A tibble: 7,476 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 GM 2020-03-19 16.3 19.0 15 17.7 34361800 17.1
## 2 GM 2020-03-23 18.0 18.6 17.2 17.6 25419700 17.0
## 3 GM 2020-04-03 18.4 18.8 17.9 18.0 13835500 17.4
## 4 GM 2020-03-20 18.4 19.0 17.7 18.1 35702000 17.5
## 5 GM 2020-03-18 18.8 19.0 14.3 16.8 39591100 16.2
## 6 GM 2020-04-06 19.1 19.8 18.5 19.5 22442100 18.9
## 7 GM 2020-04-02 19.1 19.7 17.8 18.2 17920600 17.6
## 8 GM 2020-03-24 19.3 21.7 18.6 21.1 24082900 20.4
## 9 GM 2020-04-01 19.5 20.2 19.0 19.3 17467100 18.6
## 10 WMT 2016-01-04 20.2 20.5 20.1 20.5 35967600 17.1
## # ℹ 7,466 more rows
Select columns
library("tidyverse")
stocks %>% select(open, high, low, close)
## # A tibble: 7,476 × 4
## open high low close
## <dbl> <dbl> <dbl> <dbl>
## 1 20.2 20.5 20.1 20.5
## 2 20.7 21.0 20.6 21.0
## 3 20.8 21.3 20.8 21.2
## 4 21.0 21.7 21.0 21.7
## 5 21.7 21.8 21.1 21.2
## 6 21.3 21.5 21.2 21.4
## 7 21.5 21.6 21.1 21.2
## 8 21.2 21.2 20.6 20.6
## 9 20.7 21.2 20.6 21.0
## 10 20.5 20.8 20.4 20.6
## # ℹ 7,466 more rows
Add columns
library("tidyverse")
stocks %>% select(open, high, low, close)
## # A tibble: 7,476 × 4
## open high low close
## <dbl> <dbl> <dbl> <dbl>
## 1 20.2 20.5 20.1 20.5
## 2 20.7 21.0 20.6 21.0
## 3 20.8 21.3 20.8 21.2
## 4 21.0 21.7 21.0 21.7
## 5 21.7 21.8 21.1 21.2
## 6 21.3 21.5 21.2 21.4
## 7 21.5 21.6 21.1 21.2
## 8 21.2 21.2 20.6 20.6
## 9 20.7 21.2 20.6 21.0
## 10 20.5 20.8 20.4 20.6
## # ℹ 7,466 more rows
mutate(stocks,
gain=high-low)
## # A tibble: 7,476 × 9
## symbol date open high low close volume adjusted gain
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2016-01-04 20.2 20.5 20.1 20.5 35967600 17.1 0.377
## 2 WMT 2016-01-05 20.7 21.0 20.6 21.0 39978000 17.5 0.400
## 3 WMT 2016-01-06 20.8 21.3 20.8 21.2 49693800 17.7 0.493
## 4 WMT 2016-01-07 21.0 21.7 21.0 21.7 79290000 18.1 0.770
## 5 WMT 2016-01-08 21.7 21.8 21.1 21.2 53303700 17.7 0.667
## 6 WMT 2016-01-11 21.3 21.5 21.2 21.4 37961400 17.9 0.280
## 7 WMT 2016-01-12 21.5 21.6 21.1 21.2 36587700 17.7 0.433
## 8 WMT 2016-01-13 21.2 21.2 20.6 20.6 41177100 17.2 0.633
## 9 WMT 2016-01-14 20.7 21.2 20.6 21.0 38804700 17.6 0.600
## 10 WMT 2016-01-15 20.5 20.8 20.4 20.6 45523200 17.2 0.403
## # ℹ 7,466 more rows
Summarize by groups
library("tidyverse")
stocks %>%
group_by(symbol) %>%
summarize(gain = mean(high- low, na.rm = TRUE)) %>%
arrange(gain)
## # A tibble: 3 × 2
## symbol gain
## <chr> <dbl>
## 1 WMT 0.765
## 2 GM 1.05
## 3 MSFT 4.34