Import stock prices

stocks <- tq_get(c("CAT", "SITE", "DE"),
                 get = "stock.prices",
                 from = "2020-01-01",
                 to = "2024-01-01")
stocks
## # A tibble: 3,018 × 8
##    symbol date        open  high   low close  volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>
##  1 CAT    2020-01-02  149   151.  148.  151. 3311900     132.
##  2 CAT    2020-01-03  149.  150.  147.  148. 3100600     130.
##  3 CAT    2020-01-06  147.  149.  147.  148. 2549600     130.
##  4 CAT    2020-01-07  147.  148.  146.  146. 2841900     128.
##  5 CAT    2020-01-08  147.  149.  146.  148. 2153200     130.
##  6 CAT    2020-01-09  148.  148.  147.  147. 2272500     129.
##  7 CAT    2020-01-10  147.  148.  146.  146. 2393700     128.
##  8 CAT    2020-01-13  147.  147.  146.  147. 3355200     129.
##  9 CAT    2020-01-14  147.  148.  146.  147. 2742200     129.
## 10 CAT    2020-01-15  146.  147.  145.  146. 2640500     128.
## # ℹ 3,008 more rows

Plot stock prices

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

#Apply the dplry verbs learned in chapter 5 ###########################################

Filter Rows

stocks %>% filter(adjusted > 24)
## # A tibble: 3,018 × 8
##    symbol date        open  high   low close  volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>
##  1 CAT    2020-01-02  149   151.  148.  151. 3311900     132.
##  2 CAT    2020-01-03  149.  150.  147.  148. 3100600     130.
##  3 CAT    2020-01-06  147.  149.  147.  148. 2549600     130.
##  4 CAT    2020-01-07  147.  148.  146.  146. 2841900     128.
##  5 CAT    2020-01-08  147.  149.  146.  148. 2153200     130.
##  6 CAT    2020-01-09  148.  148.  147.  147. 2272500     129.
##  7 CAT    2020-01-10  147.  148.  146.  146. 2393700     128.
##  8 CAT    2020-01-13  147.  147.  146.  147. 3355200     129.
##  9 CAT    2020-01-14  147.  148.  146.  147. 2742200     129.
## 10 CAT    2020-01-15  146.  147.  145.  146. 2640500     128.
## # ℹ 3,008 more rows

Arrange rows

stocks %>% arrange(desc(adjusted))
## # A tibble: 3,018 × 8
##    symbol date        open  high   low close  volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>
##  1 DE     2023-07-25  441.  450   440.  446. 1160700     428.
##  2 DE     2023-07-24  437.  447   436.  443. 1301700     425.
##  3 DE     2022-12-02  442.  448.  439.  446. 1471200     424.
##  4 DE     2023-07-20  439.  440.  435.  440. 1284900     422.
##  5 DE     2022-12-08  443.  443.  438.  443. 1200200     421.
##  6 DE     2022-12-01  440.  445.  436.  442. 1747400     420.
##  7 DE     2022-12-21  438.  445.  436.  442. 1220500     420.
##  8 DE     2023-08-14  436.  438.  434.  438. 1058500     420.
##  9 DE     2022-11-25  436.  442.  433.  441. 1135500     420.
## 10 DE     2022-11-28  437.  444.  437.  441. 1974800     420.
## # ℹ 3,008 more rows

Select columns

stocks %>% select(symbol, date, adjusted)
## # A tibble: 3,018 × 3
##    symbol date       adjusted
##    <chr>  <date>        <dbl>
##  1 CAT    2020-01-02     132.
##  2 CAT    2020-01-03     130.
##  3 CAT    2020-01-06     130.
##  4 CAT    2020-01-07     128.
##  5 CAT    2020-01-08     130.
##  6 CAT    2020-01-09     129.
##  7 CAT    2020-01-10     128.
##  8 CAT    2020-01-13     129.
##  9 CAT    2020-01-14     129.
## 10 CAT    2020-01-15     128.
## # ℹ 3,008 more rows

Add columns

stocks %>% mutate(price_change = close - open)
## # A tibble: 3,018 × 9
##    symbol date        open  high   low close  volume adjusted price_change
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>        <dbl>
##  1 CAT    2020-01-02  149   151.  148.  151. 3311900     132.        1.53 
##  2 CAT    2020-01-03  149.  150.  147.  148. 3100600     130.       -0.330
##  3 CAT    2020-01-06  147.  149.  147.  148. 2549600     130.        1.07 
##  4 CAT    2020-01-07  147.  148.  146.  146. 2841900     128.       -0.970
##  5 CAT    2020-01-08  147.  149.  146.  148. 2153200     130.        0.850
##  6 CAT    2020-01-09  148.  148.  147.  147. 2272500     129.       -0.5  
##  7 CAT    2020-01-10  147.  148.  146.  146. 2393700     128.       -1.32 
##  8 CAT    2020-01-13  147.  147.  146.  147. 3355200     129.        0.290
##  9 CAT    2020-01-14  147.  148.  146.  147. 2742200     129.       -0.770
## 10 CAT    2020-01-15  146.  147.  145.  146. 2640500     128.       -0.650
## # ℹ 3,008 more rows

Summarize with groups

stocks %>%
  group_by(symbol) %>%
  summarize(avg_price = mean(adjusted))
## # A tibble: 3 × 2
##   symbol avg_price
##   <chr>      <dbl>
## 1 CAT         187.
## 2 DE          308.
## 3 SITE        147.