Import stock prices

stocks <- tq_get(c("NVDA", "DELL", "DIS"),
                 get = "stock.prices",
                 from = "2016-01-01")

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 > 100)
## # A tibble: 1,953 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 NVDA   2020-07-08  99.9  102.  99.7  102. 36548000     102.
##  2 NVDA   2020-07-09 104.   106. 102.   105. 49454800     105.
##  3 NVDA   2020-07-10 106.   107. 104.   105. 49767600     105.
##  4 NVDA   2020-07-13 106.   108. 100.   101. 45707600     100.
##  5 NVDA   2020-07-14 101.   104.  97.9  104. 54267600     104.
##  6 NVDA   2020-07-15 104.   104. 101.   102. 40398400     102.
##  7 NVDA   2020-07-16 100.   102.  99.0  101. 34496400     101.
##  8 NVDA   2020-07-17 102.   102. 101.   102. 26628400     102.
##  9 NVDA   2020-07-20 103.   105. 102.   105. 28485200     105.
## 10 NVDA   2020-07-21 105.   106. 103.   103. 27703600     103.
## # … with 1,943 more rows

Arrange Rows

arrange(stocks, desc(low), desc (high)) 
## # A tibble: 5,207 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 NVDA   2021-11-29  324.  334.  320.  334. 45496400     333.
##  2 NVDA   2021-11-19  322.  331.  319.  330. 53386700     330.
##  3 NVDA   2021-11-22  335.  346.  319   320. 75433500     319.
##  4 NVDA   2021-11-30  332.  334.  319.  327. 62206600     326.
##  5 NVDA   2021-12-08  320.  323.  314.  318. 47555100     318.
##  6 NVDA   2021-12-01  332.  333.  314.  314. 48436800     314.
##  7 NVDA   2021-11-26  326   327.  314.  315. 28306900     315.
##  8 NVDA   2021-11-18  324.  328.  313.  317. 78171100     316.
##  9 NVDA   2021-12-02  312.  325.  310.  321. 47289000     321.
## 10 NVDA   2021-11-24  315.  329.  309.  327. 43516200     326.
## # … with 5,197 more rows

Select Columns

select(stocks, date) 
## # A tibble: 5,207 × 1
##    date      
##    <date>    
##  1 2016-01-04
##  2 2016-01-05
##  3 2016-01-06
##  4 2016-01-07
##  5 2016-01-08
##  6 2016-01-11
##  7 2016-01-12
##  8 2016-01-13
##  9 2016-01-14
## 10 2016-01-15
## # … with 5,197 more rows

Add Columns

mutate(stocks,
       gain = high - low)
## # A tibble: 5,207 × 9
##    symbol date        open  high   low close   volume adjusted  gain
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl> <dbl>
##  1 NVDA   2016-01-04  8.07  8.14  8.01  8.09 35807600     7.90 0.135
##  2 NVDA   2016-01-05  8.24  8.36  8.12  8.22 49027200     8.03 0.235
##  3 NVDA   2016-01-06  8.09  8.12  7.79  7.88 44934400     7.70 0.335
##  4 NVDA   2016-01-07  7.68  7.74  7.47  7.57 64530400     7.39 0.268
##  5 NVDA   2016-01-08  7.67  7.68  7.39  7.41 39847200     7.23 0.282
##  6 NVDA   2016-01-11  7.42  7.47  7.29  7.42 40937200     7.25 0.185
##  7 NVDA   2016-01-12  7.55  7.66  7.49  7.54 46935600     7.37 0.163
##  8 NVDA   2016-01-13  7.60  7.65  7.31  7.32 48167200     7.14 0.345
##  9 NVDA   2016-01-14  7.16  7.25  6.96  7.17 60023600     7.00 0.295
## 10 NVDA   2016-01-15  6.88  6.96  6.66  6.78 84145200     6.62 0.303
## # … with 5,197 more rows

Summarize with Groups

stocks %>% 
    group_by(symbol) %>% 
    summarise(open = mean (open, na.rm = TRUE),
              low = mean (low, na.rm = TRUE),
              high = mean (high, na.rm = TRUE))
## # A tibble: 3 × 4
##   symbol  open   low  high
##   <chr>  <dbl> <dbl> <dbl>
## 1 DELL    31.5  31.1  31.9
## 2 DIS    123.  121.  124. 
## 3 NVDA    91.7  89.8  93.4