Import stock prices

stocks <- tq_get(c("HD", "LOW", "AMZN"),
                 get = "stock.prices",
                 from = "2016-01-01")
stocks
## # A tibble: 5,364 × 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 5,354 more rows

Plot stock prices

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

Apply the dplyr verbs you learned in chapter 5

Filter rows

stocks %>% filter(adjusted > 24)
## # A tibble: 5,364 × 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 5,354 more rows

Arrange rows

arrange(stocks, date, open)
## # A tibble: 5,364 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 AMZN   2016-01-04  32.8  32.9  31.4  31.8 186290000     31.8
##  2 LOW    2016-01-04  74.7  75.6  74.5  75.3   6534600     66.1
##  3 HD     2016-01-04 130.  131.  129.  131.    8050900    111. 
##  4 AMZN   2016-01-05  32.3  32.3  31.4  31.7 116452000     31.7
##  5 LOW    2016-01-05  75.4  76.5  74.9  75.4   5198800     66.2
##  6 HD     2016-01-05 131.  132.  130.  130.    5320900    111. 
##  7 AMZN   2016-01-06  31.1  32.0  31.0  31.6 106584000     31.6
##  8 LOW    2016-01-06  74.5  74.8  73.4  73.9   5326500     64.9
##  9 HD     2016-01-06 129   130.  129.  129.    8199600    110. 
## 10 AMZN   2016-01-07  31.1  31.5  30.3  30.4 141498000     30.4
## # … with 5,354 more rows

##Select columns

select(stocks, symbol, date, high, low)
## # A tibble: 5,364 × 4
##    symbol date        high   low
##    <chr>  <date>     <dbl> <dbl>
##  1 HD     2016-01-04  131.  129.
##  2 HD     2016-01-05  132.  130.
##  3 HD     2016-01-06  130.  129.
##  4 HD     2016-01-07  128.  125.
##  5 HD     2016-01-08  127.  124.
##  6 HD     2016-01-11  126.  124.
##  7 HD     2016-01-12  129.  126.
##  8 HD     2016-01-13  127.  121.
##  9 HD     2016-01-14  122.  118.
## 10 HD     2016-01-15  121.  116.
## # … with 5,354 more rows

Add columns

mutate(stocks,
       gain = open - close) %>%
    select(symbol:open, close, gain)
## # A tibble: 5,364 × 5
##    symbol date        open close    gain
##    <chr>  <date>     <dbl> <dbl>   <dbl>
##  1 HD     2016-01-04  130.  131. -0.960 
##  2 HD     2016-01-05  131.  130.  0.720 
##  3 HD     2016-01-06  129   129. -0.0800
##  4 HD     2016-01-07  127.  125.  1.53  
##  5 HD     2016-01-08  126.  124.  2.54  
##  6 HD     2016-01-11  125.  126. -0.910 
##  7 HD     2016-01-12  127.  127. -0.710 
##  8 HD     2016-01-13  127.  121.  6.07  
##  9 HD     2016-01-14  121.  120.  1.67  
## 10 HD     2016-01-15  117.  119. -2.11  
## # … with 5,354 more rows

Summarise with groups

stocks
## # A tibble: 5,364 × 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 5,354 more rows
summarise(stocks, return = mean((open - close), na.rm = TRUE))
## # A tibble: 1 × 1
##    return
##     <dbl>
## 1 -0.0256
stocks %>%
    summarise(return = mean((open - close)))
## # A tibble: 1 × 1
##    return
##     <dbl>
## 1 -0.0256
stocks %>%
    group_by(symbol) %>%
    summarise(return = mean((open - close)))
## # A tibble: 3 × 2
##   symbol  return
##   <chr>    <dbl>
## 1 AMZN    0.0512
## 2 HD     -0.101 
## 3 LOW    -0.0264