Import stock prices

stocks <- tq_get(c("COIN", "CMG", "U", "RIOT"),
                 get = "stock.prices",
                 from = "2016-01-01")
stocks
## # A tibble: 6,170 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 COIN   2021-04-14  381   430.  310   328. 81065700     328.
##  2 COIN   2021-04-15  349.  349.  317.  323. 39777900     323.
##  3 COIN   2021-04-16  328.  346.  321.  342  22654500     342 
##  4 COIN   2021-04-19  337.  341.  327.  333  11405600     333 
##  5 COIN   2021-04-20  333.  335.  312.  321. 18082300     321.
##  6 COIN   2021-04-21  313.  327.  302.  312. 10103900     312.
##  7 COIN   2021-04-22  306.  314.  287.  293. 14991900     293.
##  8 COIN   2021-04-23  283.  303   282.  292.  9853800     292.
##  9 COIN   2021-04-26  304.  306.  297.  305.  6330200     305.
## 10 COIN   2021-04-27  307.  307.  300.  302   3902000     302 
## # ℹ 6,160 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(open > 310)
## # A tibble: 30 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 COIN   2021-04-14  381   430.  310   328. 81065700     328.
##  2 COIN   2021-04-15  349.  349.  317.  323. 39777900     323.
##  3 COIN   2021-04-16  328.  346.  321.  342  22654500     342 
##  4 COIN   2021-04-19  337.  341.  327.  333  11405600     333 
##  5 COIN   2021-04-20  333.  335.  312.  321. 18082300     321.
##  6 COIN   2021-04-21  313.  327.  302.  312. 10103900     312.
##  7 COIN   2021-10-21  312.  317.  298   300.  8289200     300.
##  8 COIN   2021-10-26  328.  328.  316.  319.  7635800     319.
##  9 COIN   2021-10-28  320.  328.  311   319.  5952300     319.
## 10 COIN   2021-10-29  319.  326.  316.  319.  3766400     319.
## # ℹ 20 more rows

Arrange rows

stocks %>% 
    arrange(desc(date))
## # A tibble: 6,170 × 8
##    symbol date         open   high    low  close   volume adjusted
##    <chr>  <date>      <dbl>  <dbl>  <dbl>  <dbl>    <dbl>    <dbl>
##  1 COIN   2024-09-10 155.   159.   150.   158.    5804700   158.  
##  2 CMG    2024-09-10  54.4   54.9   53.7   54.2   8363300    54.2 
##  3 U      2024-09-10  17.3   17.5   16.5   16.8  14928500    16.8 
##  4 RIOT   2024-09-10   6.84   7.28   6.60   7.24 13594300     7.24
##  5 COIN   2024-09-09 151.   157.   150.   155.    9256700   155.  
##  6 CMG    2024-09-09  54.0   54.8   54     54.3   9472500    54.3 
##  7 U      2024-09-09  16.1   17.3   16.1   17.2  13968900    17.2 
##  8 RIOT   2024-09-09   6.58   6.85   6.39   6.81 15313200     6.81
##  9 COIN   2024-09-06 163.   164.   146.   147.   11026600   147.  
## 10 CMG    2024-09-06  53.2   54.5   53.1   53.7  13248700    53.7 
## # ℹ 6,160 more rows

Select columns

stocks %>% 
    select(-adjusted)
## # A tibble: 6,170 × 7
##    symbol date        open  high   low close   volume
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>
##  1 COIN   2021-04-14  381   430.  310   328. 81065700
##  2 COIN   2021-04-15  349.  349.  317.  323. 39777900
##  3 COIN   2021-04-16  328.  346.  321.  342  22654500
##  4 COIN   2021-04-19  337.  341.  327.  333  11405600
##  5 COIN   2021-04-20  333.  335.  312.  321. 18082300
##  6 COIN   2021-04-21  313.  327.  302.  312. 10103900
##  7 COIN   2021-04-22  306.  314.  287.  293. 14991900
##  8 COIN   2021-04-23  283.  303   282.  292.  9853800
##  9 COIN   2021-04-26  304.  306.  297.  305.  6330200
## 10 COIN   2021-04-27  307.  307.  300.  302   3902000
## # ℹ 6,160 more rows
stocks %>%
    select(open, close)
## # A tibble: 6,170 × 2
##     open close
##    <dbl> <dbl>
##  1  381   328.
##  2  349.  323.
##  3  328.  342 
##  4  337.  333 
##  5  333.  321.
##  6  313.  312.
##  7  306.  293.
##  8  283.  292.
##  9  304.  305.
## 10  307.  302 
## # ℹ 6,160 more rows
stocks %>%
    select(high, low)
## # A tibble: 6,170 × 2
##     high   low
##    <dbl> <dbl>
##  1  430.  310 
##  2  349.  317.
##  3  346.  321.
##  4  341.  327.
##  5  335.  312.
##  6  327.  302.
##  7  314.  287.
##  8  303   282.
##  9  306.  297.
## 10  307.  300.
## # ℹ 6,160 more rows

Add columns

stocks %>%
    mutate(Gap = high - low)
## # A tibble: 6,170 × 9
##    symbol date        open  high   low close   volume adjusted    Gap
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>  <dbl>
##  1 COIN   2021-04-14  381   430.  310   328. 81065700     328. 120.  
##  2 COIN   2021-04-15  349.  349.  317.  323. 39777900     323.  31.9 
##  3 COIN   2021-04-16  328.  346.  321.  342  22654500     342   25.0 
##  4 COIN   2021-04-19  337.  341.  327.  333  11405600     333   14.2 
##  5 COIN   2021-04-20  333.  335.  312.  321. 18082300     321.  22.8 
##  6 COIN   2021-04-21  313.  327.  302.  312. 10103900     312.  25.4 
##  7 COIN   2021-04-22  306.  314.  287.  293. 14991900     293.  26.3 
##  8 COIN   2021-04-23  283.  303   282.  292.  9853800     292.  20.9 
##  9 COIN   2021-04-26  304.  306.  297.  305.  6330200     305.   9.20
## 10 COIN   2021-04-27  307.  307.  300.  302   3902000     302    7.20
## # ℹ 6,160 more rows

Summarize with groups

stocks %>%
    group_by(symbol) %>%
    summarize(avg_volume = AVERAGE(volume))
## # A tibble: 4 × 2
##   symbol avg_volume
##   <chr>       <dbl>
## 1 CMG     30969831.
## 2 COIN    10921663.
## 3 RIOT     9608861.
## 4 U        7854255.