Import stock prices

stocks <- tq_get(c("AAPL", "MSFT", "GOOG"),
                 get = "stock.prices",
                 from = "2016-01-01",
                 to = "2024-01-01")
stocks
## # A tibble: 6,036 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 AAPL   2016-01-04  25.7  26.3  25.5  26.3 270597600     23.9
##  2 AAPL   2016-01-05  26.4  26.5  25.6  25.7 223164000     23.3
##  3 AAPL   2016-01-06  25.1  25.6  25.0  25.2 273829600     22.8
##  4 AAPL   2016-01-07  24.7  25.0  24.1  24.1 324377600     21.9
##  5 AAPL   2016-01-08  24.6  24.8  24.2  24.2 283192000     22.0
##  6 AAPL   2016-01-11  24.7  24.8  24.3  24.6 198957600     22.3
##  7 AAPL   2016-01-12  25.1  25.2  24.7  25.0 196616800     22.7
##  8 AAPL   2016-01-13  25.1  25.3  24.3  24.3 249758400     22.1
##  9 AAPL   2016-01-14  24.5  25.1  23.9  24.9 252680400     22.6
## 10 AAPL   2016-01-15  24.0  24.4  23.8  24.3 319335600     22.0
## # ℹ 6,026 more rows

Plot stock prices

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

Apply the following dplyr verbs to your stock data

Filter rows

stocks %>% filter(adjusted > 24)
## # A tibble: 5,915 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 AAPL   2016-03-16  26.2  26.6  26.1  26.5 153214000     24.2
##  2 AAPL   2016-03-17  26.4  26.6  26.2  26.5 137682800     24.1
##  3 AAPL   2016-03-18  26.6  26.6  26.3  26.5 176820800     24.1
##  4 AAPL   2016-03-21  26.5  26.9  26.3  26.5 142010800     24.1
##  5 AAPL   2016-03-22  26.3  26.8  26.3  26.7 129777600     24.3
##  6 AAPL   2016-03-23  26.6  26.8  26.5  26.5 102814000     24.2
##  7 AAPL   2016-03-24  26.4  26.6  26.2  26.4 104532000     24.1
##  8 AAPL   2016-03-29  26.2  26.9  26.2  26.9 124760400     24.5
##  9 AAPL   2016-03-30  27.2  27.6  27.1  27.4 182404400     25.0
## 10 AAPL   2016-03-31  27.4  27.5  27.2  27.2 103553600     24.8
## # ℹ 5,905 more rows

Arrange rows

arrange(stocks, desc(high))
## # A tibble: 6,036 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 MSFT   2023-11-29  384.  384.  377.  379. 28963400     377.
##  2 MSFT   2023-11-28  378.  383   378.  383. 20453100     381.
##  3 MSFT   2023-11-27  377.  381.  376.  379. 22179200     377.
##  4 MSFT   2023-11-30  378.  380.  375.  379. 30554400     377.
##  5 MSFT   2023-11-22  378   380.  375.  378. 23345300     376.
##  6 MSFT   2023-11-20  371.  379.  371   377. 52465100     375.
##  7 MSFT   2023-12-01  377.  378.  371.  375. 33020400     372.
##  8 MSFT   2023-11-24  377.  378.  375.  377. 10176600     375.
##  9 MSFT   2023-12-13  376.  378.  371.  374. 30955500     372.
## 10 MSFT   2023-12-29  376   377.  373.  376. 18723000     374.
## # ℹ 6,026 more rows

Select columns

select(stocks, symbol:open)
## # A tibble: 6,036 × 3
##    symbol date        open
##    <chr>  <date>     <dbl>
##  1 AAPL   2016-01-04  25.7
##  2 AAPL   2016-01-05  26.4
##  3 AAPL   2016-01-06  25.1
##  4 AAPL   2016-01-07  24.7
##  5 AAPL   2016-01-08  24.6
##  6 AAPL   2016-01-11  24.7
##  7 AAPL   2016-01-12  25.1
##  8 AAPL   2016-01-13  25.1
##  9 AAPL   2016-01-14  24.5
## 10 AAPL   2016-01-15  24.0
## # ℹ 6,026 more rows
select(stocks, symbol, high, low)
## # A tibble: 6,036 × 3
##    symbol  high   low
##    <chr>  <dbl> <dbl>
##  1 AAPL    26.3  25.5
##  2 AAPL    26.5  25.6
##  3 AAPL    25.6  25.0
##  4 AAPL    25.0  24.1
##  5 AAPL    24.8  24.2
##  6 AAPL    24.8  24.3
##  7 AAPL    25.2  24.7
##  8 AAPL    25.3  24.3
##  9 AAPL    25.1  23.9
## 10 AAPL    24.4  23.8
## # ℹ 6,026 more rows

Add columns

mutate(stocks,
       diff = high - low) %>%
    
    select(symbol:low, diff)
## # A tibble: 6,036 × 6
##    symbol date        open  high   low  diff
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>
##  1 AAPL   2016-01-04  25.7  26.3  25.5 0.843
##  2 AAPL   2016-01-05  26.4  26.5  25.6 0.860
##  3 AAPL   2016-01-06  25.1  25.6  25.0 0.625
##  4 AAPL   2016-01-07  24.7  25.0  24.1 0.925
##  5 AAPL   2016-01-08  24.6  24.8  24.2 0.587
##  6 AAPL   2016-01-11  24.7  24.8  24.3 0.430
##  7 AAPL   2016-01-12  25.1  25.2  24.7 0.463
##  8 AAPL   2016-01-13  25.1  25.3  24.3 0.972
##  9 AAPL   2016-01-14  24.5  25.1  23.9 1.19 
## 10 AAPL   2016-01-15  24.0  24.4  23.8 0.587
## # ℹ 6,026 more rows

Summarize by groups

stocks %>%
    
    group_by(symbol) %>%
    
    summarise(Ave = mean(high, low = TRUE)) %>%
    
    arrange(Ave)
## # A tibble: 3 × 2
##   symbol   Ave
##   <chr>  <dbl>
## 1 GOOG    79.9
## 2 AAPL    91.7
## 3 MSFT   178.