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