Import stock prices

stocks <- tq_get(c("TM", "SBUX", "AEO", "BBWI"),
                 get = "stock.prices",
                 from = "2016-01-01",
                 to = "2017-01-01")
stocks
## # A tibble: 1,008 × 8
##    symbol date        open  high   low close volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>  <dbl>    <dbl>
##  1 TM     2016-01-04  122.  122.  120.  121. 413500     117.
##  2 TM     2016-01-05  122.  122.  120.  121. 306400     117.
##  3 TM     2016-01-06  119.  119.  118.  118. 277600     114.
##  4 TM     2016-01-07  116.  117.  115.  116. 407500     112.
##  5 TM     2016-01-08  116.  117.  113.  113. 635800     109.
##  6 TM     2016-01-11  114.  115.  113.  115. 511500     111.
##  7 TM     2016-01-12  117.  117.  114.  116. 341200     112.
##  8 TM     2016-01-13  117.  117.  115.  115. 345800     111.
##  9 TM     2016-01-14  115.  117.  114.  116. 354100     112.
## 10 TM     2016-01-15  114.  114.  112.  113. 637000     109.
## # ℹ 998 more rows

Plot stock prices

stocks %>%
    
    ggplot(aes(x = date, y = adjusted, color = symbol)) +
    geom_line()

Apply dplyr verbs

Filter rows

stocks %>% filter(adjusted > 24)
## # A tibble: 756 × 8
##    symbol date        open  high   low close volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>  <dbl>    <dbl>
##  1 TM     2016-01-04  122.  122.  120.  121. 413500     117.
##  2 TM     2016-01-05  122.  122.  120.  121. 306400     117.
##  3 TM     2016-01-06  119.  119.  118.  118. 277600     114.
##  4 TM     2016-01-07  116.  117.  115.  116. 407500     112.
##  5 TM     2016-01-08  116.  117.  113.  113. 635800     109.
##  6 TM     2016-01-11  114.  115.  113.  115. 511500     111.
##  7 TM     2016-01-12  117.  117.  114.  116. 341200     112.
##  8 TM     2016-01-13  117.  117.  115.  115. 345800     111.
##  9 TM     2016-01-14  115.  117.  114.  116. 354100     112.
## 10 TM     2016-01-15  114.  114.  112.  113. 637000     109.
## # ℹ 746 more rows
filter(stocks, volume > 500000)
## # A tibble: 815 × 8
##    symbol date        open  high   low close  volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>
##  1 TM     2016-01-08  116.  117.  113.  113.  635800     109.
##  2 TM     2016-01-11  114.  115.  113.  115.  511500     111.
##  3 TM     2016-01-15  114.  114.  112.  113.  637000     109.
##  4 TM     2016-01-20  112.  112.  109.  112. 1000200     108.
##  5 TM     2016-01-22  115.  116.  115.  116.  595500     112.
##  6 TM     2016-01-29  119.  120.  118.  120.  746000     116.
##  7 TM     2016-02-03  116.  117.  113.  115.  622600     111.
##  8 TM     2016-02-04  115.  115.  113.  114.  560900     110.
##  9 TM     2016-02-05  112.  113.  109   110.  851100     107.
## 10 TM     2016-02-08  110.  110.  108.  109.  687700     106.
## # ℹ 805 more rows
filter(stocks, date == "2016-02-08")
## # A tibble: 4 × 8
##   symbol date        open  high   low close   volume adjusted
##   <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
## 1 TM     2016-02-08 110.  110.  108.  109.    687700    106. 
## 2 SBUX   2016-02-08  53.1  54.5  52.6  54.1 21457500     45.6
## 3 AEO    2016-02-08  12.9  13.5  12.8  13.5  8234600     10.8
## 4 BBWI   2016-02-08  68.4  68.5  64.6  65.6  6156178     48.1

Arrange rows

arrange(stocks, desc(volume))
## # A tibble: 1,008 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 SBUX   2016-01-22  57.5  59.4  57.4  59.2 32820200     49.7
##  2 SBUX   2016-04-22  59.0  59.1  57.0  57.7 29836700     48.6
##  3 AEO    2016-01-08  14.0  14.2  13.1  13.2 26254600     10.6
##  4 AEO    2016-11-30  16.9  17.0  16.0  16.6 25699500     13.6
##  5 SBUX   2016-02-05  58.1  58.2  54.2  54.5 24529000     45.9
##  6 SBUX   2016-07-22  57.6  58.2  57.2  57.9 23899300     48.9
##  7 SBUX   2016-01-20  57.6  58.0  54.9  56.9 22786400     47.8
##  8 SBUX   2016-11-04  51.4  53.7  50.8  52.8 21956800     44.7
##  9 SBUX   2016-11-03  53.0  53    51.3  51.8 21847300     43.9
## 10 SBUX   2016-02-08  53.1  54.5  52.6  54.1 21457500     45.6
## # ℹ 998 more rows
arrange(stocks, desc(adjusted))
## # A tibble: 1,008 × 8
##    symbol date        open  high   low close volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>  <dbl>    <dbl>
##  1 TM     2016-12-13  122.  123.  122.  123. 201900     123.
##  2 TM     2016-12-09  123.  123.  123.  123. 291800     123.
##  3 TM     2016-12-08  123.  123.  123.  123. 431000     123.
##  4 TM     2016-12-15  122.  122.  122.  122. 211100     122.
##  5 TM     2016-12-12  122.  122.  121.  122. 247500     122.
##  6 TM     2016-12-19  121.  122.  121.  122. 171900     122.
##  7 TM     2016-12-20  121.  122.  121.  122. 257800     122.
##  8 TM     2016-12-07  120.  122.  120.  121. 304600     121.
##  9 TM     2016-12-21  121.  121.  121   121.  87400     121.
## 10 TM     2016-12-14  122.  122.  121.  121. 161200     121.
## # ℹ 998 more rows

Select columns

select(stocks, high, low)
## # A tibble: 1,008 × 2
##     high   low
##    <dbl> <dbl>
##  1  122.  120.
##  2  122.  120.
##  3  119.  118.
##  4  117.  115.
##  5  117.  113.
##  6  115.  113.
##  7  117.  114.
##  8  117.  115.
##  9  117.  114.
## 10  114.  112.
## # ℹ 998 more rows
select(stocks, date, open, close)
## # A tibble: 1,008 × 3
##    date        open close
##    <date>     <dbl> <dbl>
##  1 2016-01-04  122.  121.
##  2 2016-01-05  122.  121.
##  3 2016-01-06  119.  118.
##  4 2016-01-07  116.  116.
##  5 2016-01-08  116.  113.
##  6 2016-01-11  114.  115.
##  7 2016-01-12  117.  116.
##  8 2016-01-13  117.  115.
##  9 2016-01-14  115.  116.
## 10 2016-01-15  114.  113.
## # ℹ 998 more rows

Add columns

mutate(stocks,
       price_difference = high - low) %>%
    
    select(date, high, low, price_difference)
## # A tibble: 1,008 × 4
##    date        high   low price_difference
##    <date>     <dbl> <dbl>            <dbl>
##  1 2016-01-04  122.  120.             2.09
##  2 2016-01-05  122.  120.             1.38
##  3 2016-01-06  119.  118.             1.04
##  4 2016-01-07  117.  115.             1.18
##  5 2016-01-08  117.  113.             3.76
##  6 2016-01-11  115.  113.             1.42
##  7 2016-01-12  117.  114.             2.25
##  8 2016-01-13  117.  115.             2.82
##  9 2016-01-14  117.  114.             2.42
## 10 2016-01-15  114.  112.             2.28
## # ℹ 998 more rows

Summarize with groups

stocks %>%
    group_by(symbol) %>%
    summarise(price_difference = mean(high - low)) %>%
    arrange(price_difference)
## # A tibble: 4 × 2
##   symbol price_difference
##   <chr>             <dbl>
## 1 AEO               0.447
## 2 SBUX              0.924
## 3 TM                1.16 
## 4 BBWI              1.40