Import stock prices

stocks <- tq_get(c("GM", "VRTX", "MSFT"))
                 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 > 24)
## # A tibble: 7,961 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 GM     2014-01-02  40.7  41.1  40.3  41.0 14763300     30.9
##  2 GM     2014-01-03  40.9  41.0  39    39.6 41426900     29.9
##  3 GM     2014-01-06  39.9  40.6  39.6  40.4 25063500     30.5
##  4 GM     2014-01-07  40.7  40.9  40.1  40.2 14156900     30.4
##  5 GM     2014-01-08  40.3  40.8  40.2  40.4 11342400     30.5
##  6 GM     2014-01-09  40.9  40.9  40.3  40.5  9790600     30.6
##  7 GM     2014-01-10  40.6  40.7  39.8  40.0 14596000     30.2
##  8 GM     2014-01-13  40.2  40.6  39.4  39.6 20993200     29.9
##  9 GM     2014-01-14  39.8  40.2  39.6  40.0 17389100     30.2
## 10 GM     2014-01-15  39.6  39.8  39.0  39.4 89207600     29.7
## # ℹ 7,951 more rows

Arrange Rows

stocks %>% arrange(desc("msft"))
## # A tibble: 8,070 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 GM     2014-01-02  40.7  41.1  40.3  41.0 14763300     30.9
##  2 GM     2014-01-03  40.9  41.0  39    39.6 41426900     29.9
##  3 GM     2014-01-06  39.9  40.6  39.6  40.4 25063500     30.5
##  4 GM     2014-01-07  40.7  40.9  40.1  40.2 14156900     30.4
##  5 GM     2014-01-08  40.3  40.8  40.2  40.4 11342400     30.5
##  6 GM     2014-01-09  40.9  40.9  40.3  40.5  9790600     30.6
##  7 GM     2014-01-10  40.6  40.7  39.8  40.0 14596000     30.2
##  8 GM     2014-01-13  40.2  40.6  39.4  39.6 20993200     29.9
##  9 GM     2014-01-14  39.8  40.2  39.6  40.0 17389100     30.2
## 10 GM     2014-01-15  39.6  39.8  39.0  39.4 89207600     29.7
## # ℹ 8,060 more rows

Select Columns

stocks %>% select("date")
## # A tibble: 8,070 × 1
##    date      
##    <date>    
##  1 2014-01-02
##  2 2014-01-03
##  3 2014-01-06
##  4 2014-01-07
##  5 2014-01-08
##  6 2014-01-09
##  7 2014-01-10
##  8 2014-01-13
##  9 2014-01-14
## 10 2014-01-15
## # ℹ 8,060 more rows

Add Columns

stocks %>% mutate(stocks,
                  day_diff = close - open) %>%
    select(symbol:close, day_diff)
## # A tibble: 8,070 × 7
##    symbol date        open  high   low close day_diff
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>
##  1 GM     2014-01-02  40.7  41.1  40.3  41.0   0.270 
##  2 GM     2014-01-03  40.9  41.0  39    39.6  -1.35  
##  3 GM     2014-01-06  39.9  40.6  39.6  40.4   0.5   
##  4 GM     2014-01-07  40.7  40.9  40.1  40.2  -0.5   
##  5 GM     2014-01-08  40.3  40.8  40.2  40.4   0.0900
##  6 GM     2014-01-09  40.9  40.9  40.3  40.5  -0.390 
##  7 GM     2014-01-10  40.6  40.7  39.8  40.0  -0.570 
##  8 GM     2014-01-13  40.2  40.6  39.4  39.6  -0.580 
##  9 GM     2014-01-14  39.8  40.2  39.6  40.0   0.25  
## 10 GM     2014-01-15  39.6  39.8  39.0  39.4  -0.25  
## # ℹ 8,060 more rows

Summarise with groups

stocks %>%
    group_by(symbol) %>%
    summarise(avg_volume = mean(volume, na.rm = TRUE)) %>%
    arrange(avg_volume)
## # A tibble: 3 × 2
##   symbol avg_volume
##   <chr>       <dbl>
## 1 VRTX     1631256.
## 2 GM      14815344.
## 3 MSFT    29540629.