Import stock prices

stocks <- tq_get(c("TSLA", "MSFT", "NVDA"),
                 get = "stock.prices",
                 from = "2016-01-01")
stocks
## # A tibble: 6,558 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 TSLA   2016-01-04  15.4  15.4  14.6  14.9 102406500     14.9
##  2 TSLA   2016-01-05  15.1  15.1  14.7  14.9  47802000     14.9
##  3 TSLA   2016-01-06  14.7  14.7  14.4  14.6  56686500     14.6
##  4 TSLA   2016-01-07  14.3  14.6  14.2  14.4  53314500     14.4
##  5 TSLA   2016-01-08  14.5  14.7  14.1  14.1  54421500     14.1
##  6 TSLA   2016-01-11  14.3  14.3  13.5  13.9  61371000     13.9
##  7 TSLA   2016-01-12  14.1  14.2  13.7  14.0  46378500     14.0
##  8 TSLA   2016-01-13  14.1  14.2  13.3  13.4  61896000     13.4
##  9 TSLA   2016-01-14  13.5  14    12.9  13.7  97360500     13.7
## 10 TSLA   2016-01-15  13.3  13.7  13.1  13.7  83679000     13.7
## # ℹ 6,548 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

filter(stocks, high == 1118, low == 1)
## # A tibble: 0 × 8
## # ℹ 8 variables: symbol <chr>, date <date>, open <dbl>, high <dbl>, low <dbl>,
## #   close <dbl>, volume <dbl>, adjusted <dbl>
filter(stocks, high == 118 & low == 1)
## # A tibble: 0 × 8
## # ℹ 8 variables: symbol <chr>, date <date>, open <dbl>, high <dbl>, low <dbl>,
## #   close <dbl>, volume <dbl>, adjusted <dbl>
filter(stocks, high == 118 | low == 1)
## # A tibble: 0 × 8
## # ℹ 8 variables: symbol <chr>, date <date>, open <dbl>, high <dbl>, low <dbl>,
## #   close <dbl>, volume <dbl>, adjusted <dbl>
filter(stocks, high %in% c(100, 120))
## # A tibble: 0 × 8
## # ℹ 8 variables: symbol <chr>, date <date>, open <dbl>, high <dbl>, low <dbl>,
## #   close <dbl>, volume <dbl>, adjusted <dbl>

Arrange Rows

arrange(stocks, desc(high), desc(low))
## # A tibble: 6,558 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 MSFT   2024-07-05  460.  468.  459.  468. 16000300     467.
##  2 MSFT   2024-07-08  467.  468.  464.  466. 12962300     465.
##  3 MSFT   2024-07-09  467   467.  458   460. 17207200     459.
##  4 MSFT   2024-07-10  461.  466.  459.  466. 18196100     465.
##  5 MSFT   2024-07-11  463.  465.  452.  455. 23111200     454.
##  6 MSFT   2024-07-03  458.  461.  458.  461.  9932800     460.
##  7 MSFT   2024-07-02  453.  460.  453.  459. 13979800     458.
##  8 MSFT   2024-07-01  449.  457.  446.  457. 17662800     456.
##  9 MSFT   2024-07-15  453.  457.  451.  454. 14429400     453.
## 10 MSFT   2024-07-12  454.  456.  451.  454. 16324300     453.
## # ℹ 6,548 more rows

Select Columns

select(stocks, symbol:date)
## # A tibble: 6,558 × 2
##    symbol date      
##    <chr>  <date>    
##  1 TSLA   2016-01-04
##  2 TSLA   2016-01-05
##  3 TSLA   2016-01-06
##  4 TSLA   2016-01-07
##  5 TSLA   2016-01-08
##  6 TSLA   2016-01-11
##  7 TSLA   2016-01-12
##  8 TSLA   2016-01-13
##  9 TSLA   2016-01-14
## 10 TSLA   2016-01-15
## # ℹ 6,548 more rows
select(stocks, symbol, high, low, open)
## # A tibble: 6,558 × 4
##    symbol  high   low  open
##    <chr>  <dbl> <dbl> <dbl>
##  1 TSLA    15.4  14.6  15.4
##  2 TSLA    15.1  14.7  15.1
##  3 TSLA    14.7  14.4  14.7
##  4 TSLA    14.6  14.2  14.3
##  5 TSLA    14.7  14.1  14.5
##  6 TSLA    14.3  13.5  14.3
##  7 TSLA    14.2  13.7  14.1
##  8 TSLA    14.2  13.3  14.1
##  9 TSLA    14    12.9  13.5
## 10 TSLA    13.7  13.1  13.3
## # ℹ 6,548 more rows
select(stocks, symbol, high, low, open, close)
## # A tibble: 6,558 × 5
##    symbol  high   low  open close
##    <chr>  <dbl> <dbl> <dbl> <dbl>
##  1 TSLA    15.4  14.6  15.4  14.9
##  2 TSLA    15.1  14.7  15.1  14.9
##  3 TSLA    14.7  14.4  14.7  14.6
##  4 TSLA    14.6  14.2  14.3  14.4
##  5 TSLA    14.7  14.1  14.5  14.1
##  6 TSLA    14.3  13.5  14.3  13.9
##  7 TSLA    14.2  13.7  14.1  14.0
##  8 TSLA    14.2  13.3  14.1  13.4
##  9 TSLA    14    12.9  13.5  13.7
## 10 TSLA    13.7  13.1  13.3  13.7
## # ℹ 6,548 more rows
select(stocks, symbol, high, low, starts_with("open"))
## # A tibble: 6,558 × 4
##    symbol  high   low  open
##    <chr>  <dbl> <dbl> <dbl>
##  1 TSLA    15.4  14.6  15.4
##  2 TSLA    15.1  14.7  15.1
##  3 TSLA    14.7  14.4  14.7
##  4 TSLA    14.6  14.2  14.3
##  5 TSLA    14.7  14.1  14.5
##  6 TSLA    14.3  13.5  14.3
##  7 TSLA    14.2  13.7  14.1
##  8 TSLA    14.2  13.3  14.1
##  9 TSLA    14    12.9  13.5
## 10 TSLA    13.7  13.1  13.3
## # ℹ 6,548 more rows
select(stocks, symbol, high, low, contains("close"))
## # A tibble: 6,558 × 4
##    symbol  high   low close
##    <chr>  <dbl> <dbl> <dbl>
##  1 TSLA    15.4  14.6  14.9
##  2 TSLA    15.1  14.7  14.9
##  3 TSLA    14.7  14.4  14.6
##  4 TSLA    14.6  14.2  14.4
##  5 TSLA    14.7  14.1  14.1
##  6 TSLA    14.3  13.5  13.9
##  7 TSLA    14.2  13.7  14.0
##  8 TSLA    14.2  13.3  13.4
##  9 TSLA    14    12.9  13.7
## 10 TSLA    13.7  13.1  13.7
## # ℹ 6,548 more rows
select(stocks, symbol, high, low, ends_with("close"))
## # A tibble: 6,558 × 4
##    symbol  high   low close
##    <chr>  <dbl> <dbl> <dbl>
##  1 TSLA    15.4  14.6  14.9
##  2 TSLA    15.1  14.7  14.9
##  3 TSLA    14.7  14.4  14.6
##  4 TSLA    14.6  14.2  14.4
##  5 TSLA    14.7  14.1  14.1
##  6 TSLA    14.3  13.5  13.9
##  7 TSLA    14.2  13.7  14.0
##  8 TSLA    14.2  13.3  13.4
##  9 TSLA    14    12.9  13.7
## 10 TSLA    13.7  13.1  13.7
## # ℹ 6,548 more rows
select(stocks, symbol, high, low, ends_with("close"), everything())
## # A tibble: 6,558 × 8
##    symbol  high   low close date        open    volume adjusted
##    <chr>  <dbl> <dbl> <dbl> <date>     <dbl>     <dbl>    <dbl>
##  1 TSLA    15.4  14.6  14.9 2016-01-04  15.4 102406500     14.9
##  2 TSLA    15.1  14.7  14.9 2016-01-05  15.1  47802000     14.9
##  3 TSLA    14.7  14.4  14.6 2016-01-06  14.7  56686500     14.6
##  4 TSLA    14.6  14.2  14.4 2016-01-07  14.3  53314500     14.4
##  5 TSLA    14.7  14.1  14.1 2016-01-08  14.5  54421500     14.1
##  6 TSLA    14.3  13.5  13.9 2016-01-11  14.3  61371000     13.9
##  7 TSLA    14.2  13.7  14.0 2016-01-12  14.1  46378500     14.0
##  8 TSLA    14.2  13.3  13.4 2016-01-13  14.1  61896000     13.4
##  9 TSLA    14    12.9  13.7 2016-01-14  13.5  97360500     13.7
## 10 TSLA    13.7  13.1  13.7 2016-01-15  13.3  83679000     13.7
## # ℹ 6,548 more rows

Add Columns

mutate(stocks,
       gain = high - low)
## # A tibble: 6,558 × 9
##    symbol date        open  high   low close    volume adjusted  gain
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl> <dbl>
##  1 TSLA   2016-01-04  15.4  15.4  14.6  14.9 102406500     14.9 0.825
##  2 TSLA   2016-01-05  15.1  15.1  14.7  14.9  47802000     14.9 0.459
##  3 TSLA   2016-01-06  14.7  14.7  14.4  14.6  56686500     14.6 0.271
##  4 TSLA   2016-01-07  14.3  14.6  14.2  14.4  53314500     14.4 0.318
##  5 TSLA   2016-01-08  14.5  14.7  14.1  14.1  54421500     14.1 0.645
##  6 TSLA   2016-01-11  14.3  14.3  13.5  13.9  61371000     13.9 0.763
##  7 TSLA   2016-01-12  14.1  14.2  13.7  14.0  46378500     14.0 0.562
##  8 TSLA   2016-01-13  14.1  14.2  13.3  13.4  61896000     13.4 0.843
##  9 TSLA   2016-01-14  13.5  14    12.9  13.7  97360500     13.7 1.11 
## 10 TSLA   2016-01-15  13.3  13.7  13.1  13.7  83679000     13.7 0.521
## # ℹ 6,548 more rows

Summerise with Groups

stocks %>%
    
    # Group by symbol
    group_by(high) %>%
    
    # Calculate average close
    summarise(close = mean(close, na.rm = TRUE)) %>%
    
    # Sort it
    arrange(close)
## # A tibble: 6,224 × 2
##     high close
##    <dbl> <dbl>
##  1 0.654 0.631
##  2 0.639 0.632
##  3 0.660 0.636
##  4 0.664 0.637
##  5 0.645 0.643
##  6 0.708 0.661
##  7 0.676 0.675
##  8 0.696 0.678
##  9 0.696 0.687
## 10 0.698 0.692
## # ℹ 6,214 more rows