Import stock prices

stocks <- tq_get(c("AAPL", "SONY"),
                 get = "stock.prices",
                 from = "2023-01-01",
                 to = "2024-01-01")
stocks
## # A tibble: 500 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 AAPL   2023-01-03  130.  131.  124.  125. 112117500     123.
##  2 AAPL   2023-01-04  127.  129.  125.  126.  89113600     125.
##  3 AAPL   2023-01-05  127.  128.  125.  125.  80962700     123.
##  4 AAPL   2023-01-06  126.  130.  125.  130.  87754700     128.
##  5 AAPL   2023-01-09  130.  133.  130.  130.  70790800     128.
##  6 AAPL   2023-01-10  130.  131.  128.  131.  63896200     129.
##  7 AAPL   2023-01-11  131.  134.  130.  133.  69458900     132.
##  8 AAPL   2023-01-12  134.  134.  131.  133.  71379600     132.
##  9 AAPL   2023-01-13  132.  135.  132.  135.  57809700     133.
## 10 AAPL   2023-01-17  135.  137.  134.  136.  63646600     134.
## # ℹ 490 more rows

Plot stock prices

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

Apply the dplyr verbs you learned in chapter

Filter Rows

stocks %>% filter(adjusted > 24) 
## # A tibble: 250 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 AAPL   2023-01-03  130.  131.  124.  125. 112117500     123.
##  2 AAPL   2023-01-04  127.  129.  125.  126.  89113600     125.
##  3 AAPL   2023-01-05  127.  128.  125.  125.  80962700     123.
##  4 AAPL   2023-01-06  126.  130.  125.  130.  87754700     128.
##  5 AAPL   2023-01-09  130.  133.  130.  130.  70790800     128.
##  6 AAPL   2023-01-10  130.  131.  128.  131.  63896200     129.
##  7 AAPL   2023-01-11  131.  134.  130.  133.  69458900     132.
##  8 AAPL   2023-01-12  134.  134.  131.  133.  71379600     132.
##  9 AAPL   2023-01-13  132.  135.  132.  135.  57809700     133.
## 10 AAPL   2023-01-17  135.  137.  134.  136.  63646600     134.
## # ℹ 240 more rows

Arrange Rows

stocks %>% arrange(symbol, open)
## # A tibble: 500 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 AAPL   2023-01-06  126.  130.  125.  130.  87754700     128.
##  2 AAPL   2023-01-04  127.  129.  125.  126.  89113600     125.
##  3 AAPL   2023-01-05  127.  128.  125.  125.  80962700     123.
##  4 AAPL   2023-01-10  130.  131.  128.  131.  63896200     129.
##  5 AAPL   2023-01-03  130.  131.  124.  125. 112117500     123.
##  6 AAPL   2023-01-09  130.  133.  130.  130.  70790800     128.
##  7 AAPL   2023-01-11  131.  134.  130.  133.  69458900     132.
##  8 AAPL   2023-01-13  132.  135.  132.  135.  57809700     133.
##  9 AAPL   2023-01-12  134.  134.  131.  133.  71379600     132.
## 10 AAPL   2023-01-19  134.  136.  134.  135.  58280400     133.
## # ℹ 490 more rows

Select Columns

stocks %>% select(symbol, date, high, low)
## # A tibble: 500 × 4
##    symbol date        high   low
##    <chr>  <date>     <dbl> <dbl>
##  1 AAPL   2023-01-03  131.  124.
##  2 AAPL   2023-01-04  129.  125.
##  3 AAPL   2023-01-05  128.  125.
##  4 AAPL   2023-01-06  130.  125.
##  5 AAPL   2023-01-09  133.  130.
##  6 AAPL   2023-01-10  131.  128.
##  7 AAPL   2023-01-11  134.  130.
##  8 AAPL   2023-01-12  134.  131.
##  9 AAPL   2023-01-13  135.  132.
## 10 AAPL   2023-01-17  137.  134.
## # ℹ 490 more rows

Add Columns

stocks %>% mutate(close, volume)
## # A tibble: 500 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 AAPL   2023-01-03  130.  131.  124.  125. 112117500     123.
##  2 AAPL   2023-01-04  127.  129.  125.  126.  89113600     125.
##  3 AAPL   2023-01-05  127.  128.  125.  125.  80962700     123.
##  4 AAPL   2023-01-06  126.  130.  125.  130.  87754700     128.
##  5 AAPL   2023-01-09  130.  133.  130.  130.  70790800     128.
##  6 AAPL   2023-01-10  130.  131.  128.  131.  63896200     129.
##  7 AAPL   2023-01-11  131.  134.  130.  133.  69458900     132.
##  8 AAPL   2023-01-12  134.  134.  131.  133.  71379600     132.
##  9 AAPL   2023-01-13  132.  135.  132.  135.  57809700     133.
## 10 AAPL   2023-01-17  135.  137.  134.  136.  63646600     134.
## # ℹ 490 more rows

Summarise with groups

stocks %>% summarise(low, high, date)
## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
## ℹ Please use `reframe()` instead.
## ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
##   always returns an ungrouped data frame and adjust accordingly.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## # A tibble: 500 × 3
##      low  high date      
##    <dbl> <dbl> <date>    
##  1  124.  131. 2023-01-03
##  2  125.  129. 2023-01-04
##  3  125.  128. 2023-01-05
##  4  125.  130. 2023-01-06
##  5  130.  133. 2023-01-09
##  6  128.  131. 2023-01-10
##  7  130.  134. 2023-01-11
##  8  131.  134. 2023-01-12
##  9  132.  135. 2023-01-13
## 10  134.  137. 2023-01-17
## # ℹ 490 more rows