Import stock prices

stocks <- tq_get(c("GRMN", "MTN", "NVDA", "AAPL"),
                 get = "stock.prices",
                 from = "2016-01-01")
stocks
## # A tibble: 8,744 × 8
##    symbol date        open  high   low close  volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>
##  1 GRMN   2016-01-04  36.6  36.9  36.3  36.8 2050100     28.6
##  2 GRMN   2016-01-05  37    37.3  36.8  36.9 1305500     28.7
##  3 GRMN   2016-01-06  36.4  36.6  35.8  35.9 2521400     27.9
##  4 GRMN   2016-01-07  35.4  35.6  34.8  34.9 1688900     27.1
##  5 GRMN   2016-01-08  35.1  35.3  33.5  33.5 2429400     26.0
##  6 GRMN   2016-01-11  33.9  34.0  32.8  33.2 2416400     25.8
##  7 GRMN   2016-01-12  33.7  33.7  32.7  33.2 1729800     25.7
##  8 GRMN   2016-01-13  33.3  33.5  32.4  32.5 1552500     25.2
##  9 GRMN   2016-01-14  32.7  33.4  32.1  33.2 1973300     25.8
## 10 GRMN   2016-01-15  32.1  32.8  32.0  32.5 2168800     25.2
## # ℹ 8,734 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(symbol == "GRMN", adjusted > 35)
## # A tibble: 2,055 × 8
##    symbol date        open  high   low close  volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>
##  1 GRMN   2016-07-12  44.1  44.7  44.1  44.7 1251700     35.6
##  2 GRMN   2016-07-13  44.8  44.8  44.2  44.3  540200     35.3
##  3 GRMN   2016-07-14  44.9  45.3  44.6  44.7  762100     35.6
##  4 GRMN   2016-07-15  44.9  45.1  44.7  45.0  670000     35.8
##  5 GRMN   2016-07-18  45.2  45.7  45.1  45.4  783800     36.2
##  6 GRMN   2016-07-19  45.4  45.8  45.2  45.7  703100     36.3
##  7 GRMN   2016-07-20  45.7  46.0  45.4  45.7  503500     36.4
##  8 GRMN   2016-07-21  45.6  45.9  45.4  45.7  477400     36.4
##  9 GRMN   2016-07-22  45.7  46.1  45.6  46.0  486600     36.7
## 10 GRMN   2016-07-25  46.1  46.1  45.7  45.9  964500     36.6
## # ℹ 2,045 more rows

Arrange rows

arrange(stocks, desc(high), desc(low))
## # A tibble: 8,744 × 8
##    symbol date        open  high   low close volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>  <dbl>    <dbl>
##  1 MTN    2021-11-08  374.  376.  364.  364. 282200     331.
##  2 MTN    2021-11-05  362.  373.  359.  373. 327300     339.
##  3 MTN    2021-11-09  364.  364.  353.  359. 204200     327.
##  4 MTN    2021-11-10  358.  363.  353.  356. 162200     324.
##  5 MTN    2021-10-25  354.  361.  351.  352. 139000     320.
##  6 MTN    2021-11-03  354.  360.  352.  356. 190400     323.
##  7 MTN    2021-11-04  356.  358.  351.  356. 150200     323.
##  8 MTN    2021-11-11  357.  358.  345.  352. 240900     320.
##  9 MTN    2021-11-12  352.  357.  349.  355. 296000     323.
## 10 MTN    2021-11-15  355.  357.  350.  351. 225100     319.
## # ℹ 8,734 more rows

Select columns

select(stocks, symbol, high, low)
## # A tibble: 8,744 × 3
##    symbol  high   low
##    <chr>  <dbl> <dbl>
##  1 GRMN    36.9  36.3
##  2 GRMN    37.3  36.8
##  3 GRMN    36.6  35.8
##  4 GRMN    35.6  34.8
##  5 GRMN    35.3  33.5
##  6 GRMN    34.0  32.8
##  7 GRMN    33.7  32.7
##  8 GRMN    33.5  32.4
##  9 GRMN    33.4  32.1
## 10 GRMN    32.8  32.0
## # ℹ 8,734 more rows

Add columns

mutate(stocks,
       gain = high - low)
## # A tibble: 8,744 × 9
##    symbol date        open  high   low close  volume adjusted  gain
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl> <dbl>
##  1 GRMN   2016-01-04  36.6  36.9  36.3  36.8 2050100     28.6 0.620
##  2 GRMN   2016-01-05  37    37.3  36.8  36.9 1305500     28.7 0.560
##  3 GRMN   2016-01-06  36.4  36.6  35.8  35.9 2521400     27.9 0.770
##  4 GRMN   2016-01-07  35.4  35.6  34.8  34.9 1688900     27.1 0.790
##  5 GRMN   2016-01-08  35.1  35.3  33.5  33.5 2429400     26.0 1.85 
##  6 GRMN   2016-01-11  33.9  34.0  32.8  33.2 2416400     25.8 1.13 
##  7 GRMN   2016-01-12  33.7  33.7  32.7  33.2 1729800     25.7 0.990
##  8 GRMN   2016-01-13  33.3  33.5  32.4  32.5 1552500     25.2 1.10 
##  9 GRMN   2016-01-14  32.7  33.4  32.1  33.2 1973300     25.8 1.36 
## 10 GRMN   2016-01-15  32.1  32.8  32.0  32.5 2168800     25.2 0.730
## # ℹ 8,734 more rows

Summerise with group

stocks
## # A tibble: 8,744 × 8
##    symbol date        open  high   low close  volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>
##  1 GRMN   2016-01-04  36.6  36.9  36.3  36.8 2050100     28.6
##  2 GRMN   2016-01-05  37    37.3  36.8  36.9 1305500     28.7
##  3 GRMN   2016-01-06  36.4  36.6  35.8  35.9 2521400     27.9
##  4 GRMN   2016-01-07  35.4  35.6  34.8  34.9 1688900     27.1
##  5 GRMN   2016-01-08  35.1  35.3  33.5  33.5 2429400     26.0
##  6 GRMN   2016-01-11  33.9  34.0  32.8  33.2 2416400     25.8
##  7 GRMN   2016-01-12  33.7  33.7  32.7  33.2 1729800     25.7
##  8 GRMN   2016-01-13  33.3  33.5  32.4  32.5 1552500     25.2
##  9 GRMN   2016-01-14  32.7  33.4  32.1  33.2 1973300     25.8
## 10 GRMN   2016-01-15  32.1  32.8  32.0  32.5 2168800     25.2
## # ℹ 8,734 more rows
# average high price 
summarise(stocks, Average_high = mean(high, na.rm = TRUE))
## # A tibble: 1 × 1
##   Average_high
##          <dbl>
## 1         110.