Import stock prices

stocks <- tq_get(c("HD", "LOW", "TGT"),
                 get = "stock.prices",
                 from = "2016-01-01",
                 to = "2019-07-04")
stocks
## # A tibble: 2,643 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 HD     2016-01-04  130.  131.  129.  131.  8050900     111.
##  2 HD     2016-01-05  131.  132.  130.  130.  5320900     111.
##  3 HD     2016-01-06  129   130.  129.  129.  8199600     110.
##  4 HD     2016-01-07  127.  128.  125.  125. 12551000     107.
##  5 HD     2016-01-08  126.  127.  124.  124.  7104500     105.
##  6 HD     2016-01-11  125.  126.  124.  126.  6811600     107.
##  7 HD     2016-01-12  127.  129.  126.  127.  5695700     108.
##  8 HD     2016-01-13  127.  127.  121.  121.  8932200     103.
##  9 HD     2016-01-14  121.  122.  118.  120. 13389100     102.
## 10 HD     2016-01-15  117.  121.  116.  119. 10515000     101.
## # … with 2,633 more rows

Plot stock prices

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

apply 2

filter rows

stocks
## # A tibble: 2,643 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 HD     2016-01-04  130.  131.  129.  131.  8050900     111.
##  2 HD     2016-01-05  131.  132.  130.  130.  5320900     111.
##  3 HD     2016-01-06  129   130.  129.  129.  8199600     110.
##  4 HD     2016-01-07  127.  128.  125.  125. 12551000     107.
##  5 HD     2016-01-08  126.  127.  124.  124.  7104500     105.
##  6 HD     2016-01-11  125.  126.  124.  126.  6811600     107.
##  7 HD     2016-01-12  127.  129.  126.  127.  5695700     108.
##  8 HD     2016-01-13  127.  127.  121.  121.  8932200     103.
##  9 HD     2016-01-14  121.  122.  118.  120. 13389100     102.
## 10 HD     2016-01-15  117.  121.  116.  119. 10515000     101.
## # … with 2,633 more rows
filter(stocks, adjusted > 110)
## # A tibble: 790 × 8
##    symbol date        open  high   low close  volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>
##  1 HD     2016-01-04  130.  131.  129.  131. 8050900     111.
##  2 HD     2016-01-05  131.  132.  130.  130. 5320900     111.
##  3 HD     2016-03-14  128.  130.  128.  129. 3653200     110.
##  4 HD     2016-03-15  129.  130.  129.  130. 4033900     111.
##  5 HD     2016-03-16  130.  131.  129.  130. 3609600     112.
##  6 HD     2016-03-17  130.  131.  129.  131. 4130900     112.
##  7 HD     2016-03-18  131.  132.  131.  131. 8069200     112.
##  8 HD     2016-03-21  132.  132.  130.  131. 3817000     112.
##  9 HD     2016-03-22  131.  131.  130.  131. 3946500     112.
## 10 HD     2016-03-23  131.  131.  130.  130. 3625300     111.
## # … with 780 more rows

arange rows

arrange(stocks, desc(low))
## # A tibble: 2,643 × 8
##    symbol date        open  high   low close  volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>
##  1 HD     2018-09-11  213   215.  212.  214. 5969500     193.
##  2 HD     2018-09-20  212.  213.  211.  211. 4020800     191.
##  3 HD     2018-09-12  214.  215.  211.  212. 5660100     191.
##  4 HD     2018-09-19  212   213.  211.  212. 2579100     191.
##  5 HD     2018-09-21  211.  213.  211.  212. 9749200     192.
##  6 HD     2019-07-03  210.  213.  210.  212. 2183700     196.
##  7 HD     2019-06-20  210.  212.  209.  211. 5171500     195.
##  8 HD     2019-06-21  211.  212.  209.  209. 9855000     193.
##  9 HD     2018-09-13  211.  211.  209.  209. 4701100     189.
## 10 HD     2019-07-02  210.  210.  208.  210. 3160500     194.
## # … with 2,633 more rows

select columns

select(stocks, open:low, adjusted)
## # A tibble: 2,643 × 4
##     open  high   low adjusted
##    <dbl> <dbl> <dbl>    <dbl>
##  1  130.  131.  129.     111.
##  2  131.  132.  130.     111.
##  3  129   130.  129.     110.
##  4  127.  128.  125.     107.
##  5  126.  127.  124.     105.
##  6  125.  126.  124.     107.
##  7  127.  129.  126.     108.
##  8  127.  127.  121.     103.
##  9  121.  122.  118.     102.
## 10  117.  121.  116.     101.
## # … with 2,633 more rows

add columns

mutate(stocks, highlowdif = high - low)
## # A tibble: 2,643 × 9
##    symbol date        open  high   low close   volume adjusted highlowdif
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>      <dbl>
##  1 HD     2016-01-04  130.  131.  129.  131.  8050900     111.       1.62
##  2 HD     2016-01-05  131.  132.  130.  130.  5320900     111.       1.89
##  3 HD     2016-01-06  129   130.  129.  129.  8199600     110.       1.34
##  4 HD     2016-01-07  127.  128.  125.  125. 12551000     107.       3.18
##  5 HD     2016-01-08  126.  127.  124.  124.  7104500     105.       3.03
##  6 HD     2016-01-11  125.  126.  124.  126.  6811600     107.       1.99
##  7 HD     2016-01-12  127.  129.  126.  127.  5695700     108.       2.97
##  8 HD     2016-01-13  127.  127.  121.  121.  8932200     103.       6.5 
##  9 HD     2016-01-14  121.  122.  118.  120. 13389100     102.       3.32
## 10 HD     2016-01-15  117.  121.  116.  119. 10515000     101.       5.05
## # … with 2,633 more rows

summarize with groups

stocks
## # A tibble: 2,643 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 HD     2016-01-04  130.  131.  129.  131.  8050900     111.
##  2 HD     2016-01-05  131.  132.  130.  130.  5320900     111.
##  3 HD     2016-01-06  129   130.  129.  129.  8199600     110.
##  4 HD     2016-01-07  127.  128.  125.  125. 12551000     107.
##  5 HD     2016-01-08  126.  127.  124.  124.  7104500     105.
##  6 HD     2016-01-11  125.  126.  124.  126.  6811600     107.
##  7 HD     2016-01-12  127.  129.  126.  127.  5695700     108.
##  8 HD     2016-01-13  127.  127.  121.  121.  8932200     103.
##  9 HD     2016-01-14  121.  122.  118.  120. 13389100     102.
## 10 HD     2016-01-15  117.  121.  116.  119. 10515000     101.
## # … with 2,633 more rows
group_by(stocks, symbol)
## # A tibble: 2,643 × 8
## # Groups:   symbol [3]
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 HD     2016-01-04  130.  131.  129.  131.  8050900     111.
##  2 HD     2016-01-05  131.  132.  130.  130.  5320900     111.
##  3 HD     2016-01-06  129   130.  129.  129.  8199600     110.
##  4 HD     2016-01-07  127.  128.  125.  125. 12551000     107.
##  5 HD     2016-01-08  126.  127.  124.  124.  7104500     105.
##  6 HD     2016-01-11  125.  126.  124.  126.  6811600     107.
##  7 HD     2016-01-12  127.  129.  126.  127.  5695700     108.
##  8 HD     2016-01-13  127.  127.  121.  121.  8932200     103.
##  9 HD     2016-01-14  121.  122.  118.  120. 13389100     102.
## 10 HD     2016-01-15  117.  121.  116.  119. 10515000     101.
## # … with 2,633 more rows