Import stock prices

stocks <- tq_get(c("PYPL", "GM", "ABNB", "AXP", "NVDA", "GOOGL"),
                 get = "stock.prices",
                 from = "2016-01-01")
             
stocks
## # A tibble: 11,890 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 PYPL   2016-01-04  35.1  35.6  34.3  34.8 12287700     34.8
##  2 PYPL   2016-01-05  35.0  35.0  33.9  34.3 11227700     34.3
##  3 PYPL   2016-01-06  33.7  34.0  33.2  34.0  8441300     34.0
##  4 PYPL   2016-01-07  33.2  34.2  33.0  33.1 11041100     33.1
##  5 PYPL   2016-01-08  33.5  33.9  32.6  32.7  7848800     32.7
##  6 PYPL   2016-01-11  33.0  33.4  32.5  33.0  8937400     33.0
##  7 PYPL   2016-01-12  33.3  33.6  32.7  33.1  7854000     33.1
##  8 PYPL   2016-01-13  33.3  33.6  32.0  32.1  8069400     32.1
##  9 PYPL   2016-01-14  32.2  33.0  31.7  32.9  7749500     32.9
## 10 PYPL   2016-01-15  31.6  32.5  31.6  32.3 12174400     32.3
## # ℹ 11,880 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 > 400)
## # A tibble: 0 × 8
## # ℹ 8 variables: symbol <chr>, date <date>, open <dbl>, high <dbl>, low <dbl>,
## #   close <dbl>, volume <dbl>, adjusted <dbl>

Arrange rows

stocks %>%
    arrange(desc(date))
## # A tibble: 11,890 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 PYPL   2024-09-13  70.0  70.6  69.9  70.1   7569300     70.1
##  2 GM     2024-09-13  46.3  47.0  46.2  46.3   8076500     46.3
##  3 ABNB   2024-09-13 118.  119.  117.  118.    3512700    118. 
##  4 AXP    2024-09-13 256.  260.  256.  259     2198800    259  
##  5 NVDA   2024-09-13 119.  120.  118.  119.  237763200    119. 
##  6 GOOGL  2024-09-13 155.  158.  155.  157.   29563000    157. 
##  7 PYPL   2024-09-12  69.1  70.4  69.0  70.4   8376700     70.4
##  8 GM     2024-09-12  44.7  46.6  44.6  46.1  14599900     46.1
##  9 ABNB   2024-09-12 116.  117.  115.  117.    3076200    117. 
## 10 AXP    2024-09-12 254.  257   253.  255.    2279600    255. 
## # ℹ 11,880 more rows

Select colums

stocks %>%
    select(-adjusted)
## # A tibble: 11,890 × 7
##    symbol date        open  high   low close   volume
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>
##  1 PYPL   2016-01-04  35.1  35.6  34.3  34.8 12287700
##  2 PYPL   2016-01-05  35.0  35.0  33.9  34.3 11227700
##  3 PYPL   2016-01-06  33.7  34.0  33.2  34.0  8441300
##  4 PYPL   2016-01-07  33.2  34.2  33.0  33.1 11041100
##  5 PYPL   2016-01-08  33.5  33.9  32.6  32.7  7848800
##  6 PYPL   2016-01-11  33.0  33.4  32.5  33.0  8937400
##  7 PYPL   2016-01-12  33.3  33.6  32.7  33.1  7854000
##  8 PYPL   2016-01-13  33.3  33.6  32.0  32.1  8069400
##  9 PYPL   2016-01-14  32.2  33.0  31.7  32.9  7749500
## 10 PYPL   2016-01-15  31.6  32.5  31.6  32.3 12174400
## # ℹ 11,880 more rows
stocks %>%
    select(open, close)
## # A tibble: 11,890 × 2
##     open close
##    <dbl> <dbl>
##  1  35.1  34.8
##  2  35.0  34.3
##  3  33.7  34.0
##  4  33.2  33.1
##  5  33.5  32.7
##  6  33.0  33.0
##  7  33.3  33.1
##  8  33.3  32.1
##  9  32.2  32.9
## 10  31.6  32.3
## # ℹ 11,880 more rows
stocks %>%
    select(open, close)
## # A tibble: 11,890 × 2
##     open close
##    <dbl> <dbl>
##  1  35.1  34.8
##  2  35.0  34.3
##  3  33.7  34.0
##  4  33.2  33.1
##  5  33.5  32.7
##  6  33.0  33.0
##  7  33.3  33.1
##  8  33.3  32.1
##  9  32.2  32.9
## 10  31.6  32.3
## # ℹ 11,880 more rows

Add colums

stocks %>%
    mutate(gap = open - close)
## # A tibble: 11,890 × 9
##    symbol date        open  high   low close   volume adjusted     gap
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>   <dbl>
##  1 PYPL   2016-01-04  35.1  35.6  34.3  34.8 12287700     34.8  0.380 
##  2 PYPL   2016-01-05  35.0  35.0  33.9  34.3 11227700     34.3  0.670 
##  3 PYPL   2016-01-06  33.7  34.0  33.2  34.0  8441300     34.0 -0.280 
##  4 PYPL   2016-01-07  33.2  34.2  33.0  33.1 11041100     33.1  0.0200
##  5 PYPL   2016-01-08  33.5  33.9  32.6  32.7  7848800     32.7  0.770 
##  6 PYPL   2016-01-11  33.0  33.4  32.5  33.0  8937400     33.0 -0.0200
##  7 PYPL   2016-01-12  33.3  33.6  32.7  33.1  7854000     33.1  0.270 
##  8 PYPL   2016-01-13  33.3  33.6  32.0  32.1  8069400     32.1  1.16  
##  9 PYPL   2016-01-14  32.2  33.0  31.7  32.9  7749500     32.9 -0.720 
## 10 PYPL   2016-01-15  31.6  32.5  31.6  32.3 12174400     32.3 -0.690 
## # ℹ 11,880 more rows

Summarize with group

stocks %>%
    group_by(symbol)
## # A tibble: 11,890 × 8
## # Groups:   symbol [6]
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 PYPL   2016-01-04  35.1  35.6  34.3  34.8 12287700     34.8
##  2 PYPL   2016-01-05  35.0  35.0  33.9  34.3 11227700     34.3
##  3 PYPL   2016-01-06  33.7  34.0  33.2  34.0  8441300     34.0
##  4 PYPL   2016-01-07  33.2  34.2  33.0  33.1 11041100     33.1
##  5 PYPL   2016-01-08  33.5  33.9  32.6  32.7  7848800     32.7
##  6 PYPL   2016-01-11  33.0  33.4  32.5  33.0  8937400     33.0
##  7 PYPL   2016-01-12  33.3  33.6  32.7  33.1  7854000     33.1
##  8 PYPL   2016-01-13  33.3  33.6  32.0  32.1  8069400     32.1
##  9 PYPL   2016-01-14  32.2  33.0  31.7  32.9  7749500     32.9
## 10 PYPL   2016-01-15  31.6  32.5  31.6  32.3 12174400     32.3
## # ℹ 11,880 more rows