Import stock prices

stocks <- tq_get(c("AAPL", "MSFT", "DELL", "GOOG"),
                 get = "stock.prices",
                 from = "2020-01-01",)
                 
stocks
## # A tibble: 4,420 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 AAPL   2020-01-02  74.1  75.2  73.8  75.1 135480400     73.0
##  2 AAPL   2020-01-03  74.3  75.1  74.1  74.4 146322800     72.3
##  3 AAPL   2020-01-06  73.4  75.0  73.2  74.9 118387200     72.8
##  4 AAPL   2020-01-07  75.0  75.2  74.4  74.6 108872000     72.5
##  5 AAPL   2020-01-08  74.3  76.1  74.3  75.8 132079200     73.7
##  6 AAPL   2020-01-09  76.8  77.6  76.6  77.4 170108400     75.2
##  7 AAPL   2020-01-10  77.7  78.2  77.1  77.6 140644800     75.4
##  8 AAPL   2020-01-13  77.9  79.3  77.8  79.2 121532000     77.0
##  9 AAPL   2020-01-14  79.2  79.4  78.0  78.2 161954400     76.0
## 10 AAPL   2020-01-15  78.0  78.9  77.4  77.8 121923600     75.6
## # ℹ 4,410 more rows

Plot stock prices

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

Apply 2

Apply the deplyr verbs from chapter 5

Select rows

stocks %>% filter(adjusted > 50)
## # A tibble: 3,653 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 AAPL   2020-01-02  74.1  75.2  73.8  75.1 135480400     73.0
##  2 AAPL   2020-01-03  74.3  75.1  74.1  74.4 146322800     72.3
##  3 AAPL   2020-01-06  73.4  75.0  73.2  74.9 118387200     72.8
##  4 AAPL   2020-01-07  75.0  75.2  74.4  74.6 108872000     72.5
##  5 AAPL   2020-01-08  74.3  76.1  74.3  75.8 132079200     73.7
##  6 AAPL   2020-01-09  76.8  77.6  76.6  77.4 170108400     75.2
##  7 AAPL   2020-01-10  77.7  78.2  77.1  77.6 140644800     75.4
##  8 AAPL   2020-01-13  77.9  79.3  77.8  79.2 121532000     77.0
##  9 AAPL   2020-01-14  79.2  79.4  78.0  78.2 161954400     76.0
## 10 AAPL   2020-01-15  78.0  78.9  77.4  77.8 121923600     75.6
## # ℹ 3,643 more rows
filter(stocks, open > 50)
## # A tibble: 3,750 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 AAPL   2020-01-02  74.1  75.2  73.8  75.1 135480400     73.0
##  2 AAPL   2020-01-03  74.3  75.1  74.1  74.4 146322800     72.3
##  3 AAPL   2020-01-06  73.4  75.0  73.2  74.9 118387200     72.8
##  4 AAPL   2020-01-07  75.0  75.2  74.4  74.6 108872000     72.5
##  5 AAPL   2020-01-08  74.3  76.1  74.3  75.8 132079200     73.7
##  6 AAPL   2020-01-09  76.8  77.6  76.6  77.4 170108400     75.2
##  7 AAPL   2020-01-10  77.7  78.2  77.1  77.6 140644800     75.4
##  8 AAPL   2020-01-13  77.9  79.3  77.8  79.2 121532000     77.0
##  9 AAPL   2020-01-14  79.2  79.4  78.0  78.2 161954400     76.0
## 10 AAPL   2020-01-15  78.0  78.9  77.4  77.8 121923600     75.6
## # ℹ 3,740 more rows

Arrange rows

arrange(stocks, desc(open))
## # A tibble: 4,420 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 MSFT   2024-05-22  430.  432.  427.  431. 18021300     431.
##  2 MSFT   2024-03-21  430.  431.  427.  429. 21296200     429.
##  3 MSFT   2024-03-22  430.  430.  426.  429. 17636500     428.
##  4 MSFT   2024-05-21  427.  433.  425.  429. 21453300     429.
##  5 MSFT   2024-04-15  427.  427.  413.  414. 20273500     413.
##  6 MSFT   2024-04-09  426.  428.  422.  426. 12512300     426.
##  7 MSFT   2024-04-11  426.  429.  422.  428. 17966400     427.
##  8 MSFT   2024-03-26  426.  426.  421.  422. 16725600     421.
##  9 MSFT   2024-03-25  425.  427.  422.  423. 18060500     422.
## 10 MSFT   2024-04-08  425.  427.  423.  425. 14272400     424.
## # ℹ 4,410 more rows

Select columns

select(stocks, symbol, adjusted)
## # A tibble: 4,420 × 2
##    symbol adjusted
##    <chr>     <dbl>
##  1 AAPL       73.0
##  2 AAPL       72.3
##  3 AAPL       72.8
##  4 AAPL       72.5
##  5 AAPL       73.7
##  6 AAPL       75.2
##  7 AAPL       75.4
##  8 AAPL       77.0
##  9 AAPL       76.0
## 10 AAPL       75.6
## # ℹ 4,410 more rows
select(stocks, symbol:close)
## # A tibble: 4,420 × 6
##    symbol date        open  high   low close
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>
##  1 AAPL   2020-01-02  74.1  75.2  73.8  75.1
##  2 AAPL   2020-01-03  74.3  75.1  74.1  74.4
##  3 AAPL   2020-01-06  73.4  75.0  73.2  74.9
##  4 AAPL   2020-01-07  75.0  75.2  74.4  74.6
##  5 AAPL   2020-01-08  74.3  76.1  74.3  75.8
##  6 AAPL   2020-01-09  76.8  77.6  76.6  77.4
##  7 AAPL   2020-01-10  77.7  78.2  77.1  77.6
##  8 AAPL   2020-01-13  77.9  79.3  77.8  79.2
##  9 AAPL   2020-01-14  79.2  79.4  78.0  78.2
## 10 AAPL   2020-01-15  78.0  78.9  77.4  77.8
## # ℹ 4,410 more rows

Add columns

mutate(stocks,
       gain = open - close) %>%
    select(symbol, date, gain)
## # A tibble: 4,420 × 3
##    symbol date          gain
##    <chr>  <date>       <dbl>
##  1 AAPL   2020-01-02 -1.03  
##  2 AAPL   2020-01-03 -0.0700
##  3 AAPL   2020-01-06 -1.50  
##  4 AAPL   2020-01-07  0.362 
##  5 AAPL   2020-01-08 -1.51  
##  6 AAPL   2020-01-09 -0.598 
##  7 AAPL   2020-01-10  0.0675
##  8 AAPL   2020-01-13 -1.33  
##  9 AAPL   2020-01-14  1.01  
## 10 AAPL   2020-01-15  0.128 
## # ℹ 4,410 more rows
mutate(stocks,
       gain = open - close) %>%
    select(gain)
## # A tibble: 4,420 × 1
##       gain
##      <dbl>
##  1 -1.03  
##  2 -0.0700
##  3 -1.50  
##  4  0.362 
##  5 -1.51  
##  6 -0.598 
##  7  0.0675
##  8 -1.33  
##  9  1.01  
## 10  0.128 
## # ℹ 4,410 more rows

Summarise with group

stocks %>%
    group_by(symbol) %>%
    summarise(close = mean(close, na.rm = TRUE))
## # A tibble: 4 × 2
##   symbol close
##   <chr>  <dbl>
## 1 AAPL   144. 
## 2 DELL    49.9
## 3 GOOG   112. 
## 4 MSFT   276.