Import stock prices

stocks <- tq_get(c("MSFT", "AAPL","NKE"),
                 get = "stock.prices",
                 from = "2022-01-01",)
            
stocks
## # A tibble: 2,772 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 MSFT   2022-01-03  335.  338   330.  335. 28865100     325.
##  2 MSFT   2022-01-04  335.  335.  326.  329. 32674300     319.
##  3 MSFT   2022-01-05  326.  326.  316.  316. 40054300     307.
##  4 MSFT   2022-01-06  313.  319.  311.  314. 39646100     304.
##  5 MSFT   2022-01-07  314.  316.  310.  314. 32720000     304.
##  6 MSFT   2022-01-10  309.  315.  305.  314. 44289500     305.
##  7 MSFT   2022-01-11  313.  317.  310.  315. 29386800     305.
##  8 MSFT   2022-01-12  320.  323.  317.  318. 34372200     309.
##  9 MSFT   2022-01-13  320.  321.  304   305. 45366000     295.
## 10 MSFT   2022-01-14  304.  311.  304.  310. 39846400     301.
## # ℹ 2,762 more rows

Plot stock prices

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

Apply the dplyr verbs

Filter rows

stocks %>% filter(adjusted > 100)
## # A tibble: 2,262 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 MSFT   2022-01-03  335.  338   330.  335. 28865100     325.
##  2 MSFT   2022-01-04  335.  335.  326.  329. 32674300     319.
##  3 MSFT   2022-01-05  326.  326.  316.  316. 40054300     307.
##  4 MSFT   2022-01-06  313.  319.  311.  314. 39646100     304.
##  5 MSFT   2022-01-07  314.  316.  310.  314. 32720000     304.
##  6 MSFT   2022-01-10  309.  315.  305.  314. 44289500     305.
##  7 MSFT   2022-01-11  313.  317.  310.  315. 29386800     305.
##  8 MSFT   2022-01-12  320.  323.  317.  318. 34372200     309.
##  9 MSFT   2022-01-13  320.  321.  304   305. 45366000     295.
## 10 MSFT   2022-01-14  304.  311.  304.  310. 39846400     301.
## # ℹ 2,252 more rows

Arrange rows

arrange(stocks, desc(date), desc(low))
## # A tibble: 2,772 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 MSFT   2025-09-09 501.  502.  498.  498.  14410500    498. 
##  2 AAPL   2025-09-09 237   239.  233.  234.  66313900    234. 
##  3 NKE    2025-09-09  74.0  74.6  73.1  73.6  8740200     73.6
##  4 MSFT   2025-09-08 498.  501.  495.  498.  16771000    498. 
##  5 AAPL   2025-09-08 239.  240.  236.  238.  48999500    238. 
##  6 NKE    2025-09-08  74.3  74.6  73.7  74.2 13793300     74.2
##  7 MSFT   2025-09-05 509.  512.  492.  495   31994800    495  
##  8 AAPL   2025-09-05 240   241.  238.  240.  54870400    240. 
##  9 NKE    2025-09-05  74.8  75.4  73.6  73.9 13758400     73.9
## 10 MSFT   2025-09-04 504.  508.  503.  508.  15509500    508. 
## # ℹ 2,762 more rows

Select columns

select(stocks, symbol, date, high, low)
## # A tibble: 2,772 × 4
##    symbol date        high   low
##    <chr>  <date>     <dbl> <dbl>
##  1 MSFT   2022-01-03  338   330.
##  2 MSFT   2022-01-04  335.  326.
##  3 MSFT   2022-01-05  326.  316.
##  4 MSFT   2022-01-06  319.  311.
##  5 MSFT   2022-01-07  316.  310.
##  6 MSFT   2022-01-10  315.  305.
##  7 MSFT   2022-01-11  317.  310.
##  8 MSFT   2022-01-12  323.  317.
##  9 MSFT   2022-01-13  321.  304 
## 10 MSFT   2022-01-14  311.  304.
## # ℹ 2,762 more rows

Summarise with groups

summarise(stocks, mean(low, na.rm = TRUE))
## # A tibble: 1 × 1
##   `mean(low, na.rm = TRUE)`
##                       <dbl>
## 1                      211.