Import stock prices

stocks <- tq_get(c("JNJ", "MSFT", "BAC"),
                 get = "stock.prices",
                 from = "2016-01-01",
                 to = "2018-01-01")
stocks
## # A tibble: 1,509 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 JNJ    2016-01-04 102.  102.   99.4 100.  12722800     79.7
##  2 JNJ    2016-01-05 101.  101.  101.  101.   6467200     80.1
##  3 JNJ    2016-01-06  99.8 101.   99.6 100.   7733800     79.7
##  4 JNJ    2016-01-07  99.3 100.   98.9  99.2  9433100     78.7
##  5 JNJ    2016-01-08  99.9  99.9  97.8  98.2  9766700     77.9
##  6 JNJ    2016-01-11  98.2  98.6  96.1  97.6  8151400     77.4
##  7 JNJ    2016-01-12  98.0  98.6  97.2  98.2  6745000     78.0
##  8 JNJ    2016-01-13  98.5  99.0  96.8  97.0  8290700     77.0
##  9 JNJ    2016-01-14  97.1  99.5  97    98.9 10164300     78.5
## 10 JNJ    2016-01-15  96.4  98    96.2  97   12662200     77.0
## # ℹ 1,499 more rows

Plot stock prices

stocks %>%
    
    ggplot(aes(x = date, y = adjusted, color = symbol)) +
    geom_line()

Apply the dplyr verbs learned in chapter 5

Filter Rows

stocks %>% filter(adjusted > 24)
## # A tibble: 1,028 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 JNJ    2016-01-04 102.  102.   99.4 100.  12722800     79.7
##  2 JNJ    2016-01-05 101.  101.  101.  101.   6467200     80.1
##  3 JNJ    2016-01-06  99.8 101.   99.6 100.   7733800     79.7
##  4 JNJ    2016-01-07  99.3 100.   98.9  99.2  9433100     78.7
##  5 JNJ    2016-01-08  99.9  99.9  97.8  98.2  9766700     77.9
##  6 JNJ    2016-01-11  98.2  98.6  96.1  97.6  8151400     77.4
##  7 JNJ    2016-01-12  98.0  98.6  97.2  98.2  6745000     78.0
##  8 JNJ    2016-01-13  98.5  99.0  96.8  97.0  8290700     77.0
##  9 JNJ    2016-01-14  97.1  99.5  97    98.9 10164300     78.5
## 10 JNJ    2016-01-15  96.4  98    96.2  97   12662200     77.0
## # ℹ 1,018 more rows

Arrange rows

stocks %>% arrange(adjusted > 22)
## # A tibble: 1,509 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 BAC    2016-01-04  16.5  16.5  16.2  16.4 114888000     13.7
##  2 BAC    2016-01-05  16.5  16.6  16.2  16.4  66670000     13.7
##  3 BAC    2016-01-06  16.2  16.3  16.0  16.1 102760800     13.5
##  4 BAC    2016-01-07  15.7  15.9  15.4  15.5 116255900     13.0
##  5 BAC    2016-01-08  15.9  15.9  15.2  15.2 124782400     12.7
##  6 BAC    2016-01-11  15.3  15.4  14.9  15.3 104611700     12.8
##  7 BAC    2016-01-12  15.5  15.6  15.1  15.3 100023500     12.8
##  8 BAC    2016-01-13  15.5  15.5  14.9  14.9 119413000     12.5
##  9 BAC    2016-01-14  15.0  15.2  14.6  15.0 125920000     12.5
## 10 BAC    2016-01-15  14.4  14.7  14.1  14.5 172296100     12.1
## # ℹ 1,499 more rows

Select Columns

stocks %>% select(low)
## # A tibble: 1,509 × 1
##      low
##    <dbl>
##  1  99.4
##  2 101. 
##  3  99.6
##  4  98.9
##  5  97.8
##  6  96.1
##  7  97.2
##  8  96.8
##  9  97  
## 10  96.2
## # ℹ 1,499 more rows

Add Columns

mutate(stocks,
       range = high - low)
## # A tibble: 1,509 × 9
##    symbol date        open  high   low close   volume adjusted range
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl> <dbl>
##  1 JNJ    2016-01-04 102.  102.   99.4 100.  12722800     79.7 2.36 
##  2 JNJ    2016-01-05 101.  101.  101.  101.   6467200     80.1 0.870
##  3 JNJ    2016-01-06  99.8 101.   99.6 100.   7733800     79.7 1.37 
##  4 JNJ    2016-01-07  99.3 100.   98.9  99.2  9433100     78.7 1.21 
##  5 JNJ    2016-01-08  99.9  99.9  97.8  98.2  9766700     77.9 2.09 
##  6 JNJ    2016-01-11  98.2  98.6  96.1  97.6  8151400     77.4 2.55 
##  7 JNJ    2016-01-12  98.0  98.6  97.2  98.2  6745000     78.0 1.39 
##  8 JNJ    2016-01-13  98.5  99.0  96.8  97.0  8290700     77.0 2.14 
##  9 JNJ    2016-01-14  97.1  99.5  97    98.9 10164300     78.5 2.47 
## 10 JNJ    2016-01-15  96.4  98    96.2  97   12662200     77.0 1.75 
## # ℹ 1,499 more rows

Summarise with groups

stocks %>%
    
    #remove missing values
    filter(!is.na(symbol))
## # A tibble: 1,509 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 JNJ    2016-01-04 102.  102.   99.4 100.  12722800     79.7
##  2 JNJ    2016-01-05 101.  101.  101.  101.   6467200     80.1
##  3 JNJ    2016-01-06  99.8 101.   99.6 100.   7733800     79.7
##  4 JNJ    2016-01-07  99.3 100.   98.9  99.2  9433100     78.7
##  5 JNJ    2016-01-08  99.9  99.9  97.8  98.2  9766700     77.9
##  6 JNJ    2016-01-11  98.2  98.6  96.1  97.6  8151400     77.4
##  7 JNJ    2016-01-12  98.0  98.6  97.2  98.2  6745000     78.0
##  8 JNJ    2016-01-13  98.5  99.0  96.8  97.0  8290700     77.0
##  9 JNJ    2016-01-14  97.1  99.5  97    98.9 10164300     78.5
## 10 JNJ    2016-01-15  96.4  98    96.2  97   12662200     77.0
## # ℹ 1,499 more rows