Import stock prices

stocks <- tq_get(c("TSLA", "AMZN", "NVDA"),
                 get = "stock.prices",
                 from = "2016-01-01")
stocks
## # A tibble: 7,305 × 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
## # ℹ 7,295 more rows

Plot stock prices

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

Apply the dply verbs you learned in chapter 5

Filter rows

stocks %>% filter(adjusted > 23)
## # A tibble: 4,746 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 TSLA   2017-06-05  22.6  23.2  22.3  23.2 101766000     23.2
##  2 TSLA   2017-06-06  23.0  24.0  22.7  23.5 166302000     23.5
##  3 TSLA   2017-06-07  23.8  24.0  23.7  24.0 140970000     24.0
##  4 TSLA   2017-06-08  24.2  24.8  24.0  24.7 135922500     24.7
##  5 TSLA   2017-06-09  25.0  25.1  23.7  23.8 258921000     23.8
##  6 TSLA   2017-06-12  23.9  24.3  23.4  23.9 157765500     23.9
##  7 TSLA   2017-06-13  24.5  25.1  24.4  25.1 177118500     25.1
##  8 TSLA   2017-06-14  25.4  25.6  25.1  25.4 192276000     25.4
##  9 TSLA   2017-06-15  24.8  25.0  24.4  25.0 156397500     25.0
## 10 TSLA   2017-06-16  25.2  25.2  24.7  24.8 100965000     24.8
## # ℹ 4,736 more rows

Arrange rows

arrange(stocks, desc(date))
## # A tibble: 7,305 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 TSLA   2025-09-09  348.  351.  344.  347.  53816000     347.
##  2 AMZN   2025-09-09  236.  239.  235.  238.  27033800     238.
##  3 NVDA   2025-09-09  169.  171.  167.  171. 157548400     171.
##  4 TSLA   2025-09-08  355.  358.  345.  346.  75208300     346.
##  5 AMZN   2025-09-08  235.  238.  234.  236.  33947100     236.
##  6 NVDA   2025-09-08  168.  171.  167.  168. 163769100     168.
##  7 TSLA   2025-09-05  348   356.  345.  351. 108989800     351.
##  8 AMZN   2025-09-05  235.  236   232.  232.  36721800     232.
##  9 NVDA   2025-09-05  168.  169.  164.  167. 224441400     167.
## 10 TSLA   2025-09-04  336.  339.  331.  339.  60711000     339.
## # ℹ 7,295 more rows

Select Columns

select(stocks, open)
## # A tibble: 7,305 × 1
##     open
##    <dbl>
##  1  15.4
##  2  15.1
##  3  14.7
##  4  14.3
##  5  14.5
##  6  14.3
##  7  14.1
##  8  14.1
##  9  13.5
## 10  13.3
## # ℹ 7,295 more rows
select(stocks, high)
## # A tibble: 7,305 × 1
##     high
##    <dbl>
##  1  15.4
##  2  15.1
##  3  14.7
##  4  14.6
##  5  14.7
##  6  14.3
##  7  14.2
##  8  14.2
##  9  14  
## 10  13.7
## # ℹ 7,295 more rows
select(stocks, low)
## # A tibble: 7,305 × 1
##      low
##    <dbl>
##  1  14.6
##  2  14.7
##  3  14.4
##  4  14.2
##  5  14.1
##  6  13.5
##  7  13.7
##  8  13.3
##  9  12.9
## 10  13.1
## # ℹ 7,295 more rows
select(stocks, open, high, low)
## # A tibble: 7,305 × 3
##     open  high   low
##    <dbl> <dbl> <dbl>
##  1  15.4  15.4  14.6
##  2  15.1  15.1  14.7
##  3  14.7  14.7  14.4
##  4  14.3  14.6  14.2
##  5  14.5  14.7  14.1
##  6  14.3  14.3  13.5
##  7  14.1  14.2  13.7
##  8  14.1  14.2  13.3
##  9  13.5  14    12.9
## 10  13.3  13.7  13.1
## # ℹ 7,295 more rows

Add Columns

mutate(stocks, 
       gain = high - low)
## # A tibble: 7,305 × 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
## # ℹ 7,295 more rows
transmute(stocks, 
       gain = high - low)
## # A tibble: 7,305 × 1
##     gain
##    <dbl>
##  1 0.825
##  2 0.459
##  3 0.271
##  4 0.318
##  5 0.645
##  6 0.763
##  7 0.562
##  8 0.843
##  9 1.11 
## 10 0.521
## # ℹ 7,295 more rows

##Summarise with groups

summarise(stocks, high = mean(low, na.rm = TRUE))
## # A tibble: 1 × 1
##    high
##   <dbl>
## 1  94.4
stocks %>%
    
    # Remove missing values
    filter(!is.na(low))
## # A tibble: 7,305 × 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
## # ℹ 7,295 more rows