Import stock prices

stocks <- tq_get(c("SBUX", "KDP", "KO", "PEP"),
                 get = "stock.prices",
                 from = "2021-01-01")
stocks
## # A tibble: 1,704 × 8
##    symbol date        open  high   low close  volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>
##  1 SBUX   2021-01-04  108.  108.  102.  103. 8041500     99.6
##  2 SBUX   2021-01-05  103.  104.  103.  103. 5721900    100. 
##  3 SBUX   2021-01-06  103.  105.  103.  104. 5017200    101. 
##  4 SBUX   2021-01-07  104.  105.  103.  103. 5057000     99.9
##  5 SBUX   2021-01-08  104.  106.  103.  106. 5869700    102. 
##  6 SBUX   2021-01-11  105.  106.  104.  105. 4257400    101. 
##  7 SBUX   2021-01-12  104.  104.  102.  103. 4332600     99.4
##  8 SBUX   2021-01-13  102.  103.  101.  103. 4804500     99.4
##  9 SBUX   2021-01-14  104.  104.  102.  102. 4528300     98.4
## 10 SBUX   2021-01-15  101.  103.  101.  102. 5522900     98.9
## # … with 1,694 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

filter(stocks, close > 104, open > 104)
## # A tibble: 658 × 8
##    symbol date        open  high   low close  volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>
##  1 SBUX   2021-01-11  105.  106.  104.  105. 4257400     101.
##  2 SBUX   2021-01-21  105.  105.  104.  105. 5731500     101.
##  3 SBUX   2021-02-05  105.  108.  105.  106. 8072100     103.
##  4 SBUX   2021-02-08  106.  107.  105.  106. 4836600     103.
##  5 SBUX   2021-02-09  106   107.  105.  106. 4095200     103.
##  6 SBUX   2021-02-10  107.  107.  105.  106. 4293200     102.
##  7 SBUX   2021-02-11  106.  106.  105.  106. 2976000     102.
##  8 SBUX   2021-02-12  106.  106.  105.  105. 3169800     102.
##  9 SBUX   2021-02-16  105.  107.  105.  106. 4928100     103.
## 10 SBUX   2021-02-17  105.  105.  104.  104. 5733800     101.
## # … with 648 more rows

Arrange Rows

arrange(stocks, desc(date))
## # A tibble: 1,704 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 SBUX   2022-09-12  89.8  90.4  88.5  89.1  9076400     89.1
##  2 KDP    2022-09-12  38.8  39.1  38.7  39.0  5026500     39.0
##  3 KO     2022-09-12  62.4  62.8  62.3  62.5 13024000     62.5
##  4 PEP    2022-09-12 173.  174.  173.  174.   5952900    174. 
##  5 SBUX   2022-09-09  89.5  89.9  88.6  88.7  7094600     88.7
##  6 KDP    2022-09-09  38.5  38.9  38.3  38.7  5260500     38.7
##  7 KO     2022-09-09  62.2  62.9  61.9  62.3 11854300     62.3
##  8 PEP    2022-09-09 173.  175.  172.  173.   3662000    173. 
##  9 SBUX   2022-09-08  87.3  89.5  87.2  89.5  7721100     89.5
## 10 KDP    2022-09-08  38.3  38.5  38.0  38.5  6240400     38.5
## # … with 1,694 more rows

Select columns

select(stocks, -(symbol:date))
## # A tibble: 1,704 × 6
##     open  high   low close  volume adjusted
##    <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>
##  1  108.  108.  102.  103. 8041500     99.6
##  2  103.  104.  103.  103. 5721900    100. 
##  3  103.  105.  103.  104. 5017200    101. 
##  4  104.  105.  103.  103. 5057000     99.9
##  5  104.  106.  103.  106. 5869700    102. 
##  6  105.  106.  104.  105. 4257400    101. 
##  7  104.  104.  102.  103. 4332600     99.4
##  8  102.  103.  101.  103. 4804500     99.4
##  9  104.  104.  102.  102. 4528300     98.4
## 10  101.  103.  101.  102. 5522900     98.9
## # … with 1,694 more rows

Add columns

mutate(stocks, gain = open - close)
## # A tibble: 1,704 × 9
##    symbol date        open  high   low close  volume adjusted   gain
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>  <dbl>
##  1 SBUX   2021-01-04  108.  108.  102.  103. 8041500     99.6  4.56 
##  2 SBUX   2021-01-05  103.  104.  103.  103. 5721900    100.  -0.520
##  3 SBUX   2021-01-06  103.  105.  103.  104. 5017200    101.  -1.20 
##  4 SBUX   2021-01-07  104.  105.  103.  103. 5057000     99.9  1.14 
##  5 SBUX   2021-01-08  104.  106.  103.  106. 5869700    102.  -1.81 
##  6 SBUX   2021-01-11  105.  106.  104.  105. 4257400    101.   0.5  
##  7 SBUX   2021-01-12  104.  104.  102.  103. 4332600     99.4  1.19 
##  8 SBUX   2021-01-13  102.  103.  101.  103. 4804500     99.4 -0.570
##  9 SBUX   2021-01-14  104.  104.  102.  102. 4528300     98.4  1.98 
## 10 SBUX   2021-01-15  101.  103.  101.  102. 5522900     98.9 -0.950
## # … with 1,694 more rows

Summarise with groups

summarise(stocks,average = mean(open, na.rm = TRUE))
## # A tibble: 1 × 1
##   average
##     <dbl>
## 1    88.1