Import stock prices

stocks <- tq_get(c("NOC", "WMT","UPS","UNH"),
                 get = "stock.prices",
                 from = "2016-01-01")

stocks %>% glimpse()
## Rows: 8,744
## Columns: 8
## $ symbol   <chr> "NOC", "NOC", "NOC", "NOC", "NOC", "NOC", "NOC", "NOC", "NOC"…
## $ date     <date> 2016-01-04, 2016-01-05, 2016-01-06, 2016-01-07, 2016-01-08, …
## $ open     <dbl> 185.98, 187.85, 190.16, 187.90, 188.79, 187.48, 189.06, 189.0…
## $ high     <dbl> 187.60, 192.86, 193.20, 189.68, 189.74, 188.71, 189.47, 189.4…
## $ low      <dbl> 185.31, 187.85, 190.00, 186.01, 185.90, 185.51, 187.53, 184.5…
## $ close    <dbl> 187.51, 192.39, 190.47, 188.11, 186.07, 188.11, 188.92, 184.8…
## $ volume   <dbl> 1476100, 2302200, 1879700, 2136100, 1503300, 1773800, 1010400…
## $ adjusted <dbl> 163.0530, 167.2965, 165.6269, 163.5748, 161.8008, 163.5748, 1…

Plot stock prices

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

apply the dplyr verbs you learned in chapter 5

Filter rows

stocks %>% filter(volume < 1000000)
## # A tibble: 1,459 × 8
##    symbol date        open  high   low close volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>  <dbl>    <dbl>
##  1 NOC    2016-01-22  183.  184.  182.  184. 857300     160.
##  2 NOC    2016-01-25  184.  185.  182.  182. 987900     158.
##  3 NOC    2016-02-23  192.  193.  191.  191. 806500     166.
##  4 NOC    2016-02-25  190.  193.  189.  193. 812300     168.
##  5 NOC    2016-02-26  193   194.  192.  192. 861900     168.
##  6 NOC    2016-03-02  194.  195.  192.  193. 781200     169.
##  7 NOC    2016-03-14  189.  190.  188.  189. 978900     165.
##  8 NOC    2016-03-15  188.  192.  188.  192. 911800     167.
##  9 NOC    2016-03-16  191.  192.  190   192. 878200     167.
## 10 NOC    2016-03-21  193.  195.  193.  194. 839700     170.
## # ℹ 1,449 more rows

Arrange rows

stocks %>% arrange(desc(date))
## # A tibble: 8,744 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 NOC    2024-09-10 526.  527.  519.  520.    561500    520. 
##  2 WMT    2024-09-10  77.3  78.9  77.3  78.8 17680400     78.8
##  3 UPS    2024-09-10 129.  130.  129.  130.   2589800    130. 
##  4 UNH    2024-09-10 595.  605.  591.  599.   2863500    599. 
##  5 NOC    2024-09-09 517   525.  517   524.    642000    524. 
##  6 WMT    2024-09-09  76.8  77.5  76.5  77.3 22260200     77.3
##  7 UPS    2024-09-09 128.  130.  128.  129.   3770800    129. 
##  8 UNH    2024-09-09 598.  599.  575.  594.   3411400    594. 
##  9 NOC    2024-09-06 519.  523.  515.  515     535700    515  
## 10 WMT    2024-09-06  76.9  77.3  76.3  76.6 14548600     76.6
## # ℹ 8,734 more rows
stocks %>% arrange(desc(volume))
## # A tibble: 8,744 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 WMT    2017-06-16  24.6  25.2  24.4  25.1 168699000     22.1
##  2 WMT    2018-02-20  32.3  32.6  31.4  31.4 156265500     27.9
##  3 WMT    2018-02-21  31.7  31.8  30.4  30.5 148511100     27.2
##  4 WMT    2022-05-17  45.5  45.8  43.5  43.8 132940200     42.4
##  5 WMT    2018-08-16  33.4  33.4  32.6  32.9 127893900     29.8
##  6 WMT    2020-08-27  43.7  46.5  43.6  45.5 119018700     42.9
##  7 WMT    2017-11-16  31.7  33.2  31.6  33.2 114367200     29.4
##  8 WMT    2020-09-01  47.1  49.9  46.7  49.2 106798200     46.3
##  9 WMT    2016-05-19  22.7  23.1  22.5  23.1 105230100     19.7
## 10 WMT    2022-05-18  42.7  42.8  40.5  40.8 104253000     39.5
## # ℹ 8,734 more rows

Select column

stocks %>%
    select(symbol, date, adjusted)
## # A tibble: 8,744 × 3
##    symbol date       adjusted
##    <chr>  <date>        <dbl>
##  1 NOC    2016-01-04     163.
##  2 NOC    2016-01-05     167.
##  3 NOC    2016-01-06     166.
##  4 NOC    2016-01-07     164.
##  5 NOC    2016-01-08     162.
##  6 NOC    2016-01-11     164.
##  7 NOC    2016-01-12     164.
##  8 NOC    2016-01-13     161.
##  9 NOC    2016-01-14     161.
## 10 NOC    2016-01-15     160.
## # ℹ 8,734 more rows
stocks %>%
    select(-volume, -adjusted)
## # A tibble: 8,744 × 6
##    symbol date        open  high   low close
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>
##  1 NOC    2016-01-04  186.  188.  185.  188.
##  2 NOC    2016-01-05  188.  193.  188.  192.
##  3 NOC    2016-01-06  190.  193.  190   190.
##  4 NOC    2016-01-07  188.  190.  186.  188.
##  5 NOC    2016-01-08  189.  190.  186.  186.
##  6 NOC    2016-01-11  187.  189.  186.  188.
##  7 NOC    2016-01-12  189.  189.  188.  189.
##  8 NOC    2016-01-13  189   189.  185.  185.
##  9 NOC    2016-01-14  185.  187.  183.  186.
## 10 NOC    2016-01-15  181   185.  180.  184.
## # ℹ 8,734 more rows
stocks %>%
    select(everything())
## # A tibble: 8,744 × 8
##    symbol date        open  high   low close  volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>
##  1 NOC    2016-01-04  186.  188.  185.  188. 1476100     163.
##  2 NOC    2016-01-05  188.  193.  188.  192. 2302200     167.
##  3 NOC    2016-01-06  190.  193.  190   190. 1879700     166.
##  4 NOC    2016-01-07  188.  190.  186.  188. 2136100     164.
##  5 NOC    2016-01-08  189.  190.  186.  186. 1503300     162.
##  6 NOC    2016-01-11  187.  189.  186.  188. 1773800     164.
##  7 NOC    2016-01-12  189.  189.  188.  189. 1010400     164.
##  8 NOC    2016-01-13  189   189.  185.  185. 1099200     161.
##  9 NOC    2016-01-14  185.  187.  183.  186. 1062100     161.
## 10 NOC    2016-01-15  181   185.  180.  184. 1532800     160.
## # ℹ 8,734 more rows
#I Just wanted to see if this would work
stocks %>%
    select(contains("o"))
## # A tibble: 8,744 × 5
##    symbol  open   low close  volume
##    <chr>  <dbl> <dbl> <dbl>   <dbl>
##  1 NOC     186.  185.  188. 1476100
##  2 NOC     188.  188.  192. 2302200
##  3 NOC     190.  190   190. 1879700
##  4 NOC     188.  186.  188. 2136100
##  5 NOC     189.  186.  186. 1503300
##  6 NOC     187.  186.  188. 1773800
##  7 NOC     189.  188.  189. 1010400
##  8 NOC     189   185.  185. 1099200
##  9 NOC     185.  183.  186. 1062100
## 10 NOC     181   180.  184. 1532800
## # ℹ 8,734 more rows

Add columns

stocks2 <- stocks %>%
    mutate(difference = open - close) %>%
    select(symbol, open, close, difference, volume)
stocks2
## # A tibble: 8,744 × 5
##    symbol  open close difference  volume
##    <chr>  <dbl> <dbl>      <dbl>   <dbl>
##  1 NOC     186.  188.     -1.53  1476100
##  2 NOC     188.  192.     -4.54  2302200
##  3 NOC     190.  190.     -0.310 1879700
##  4 NOC     188.  188.     -0.210 2136100
##  5 NOC     189.  186.      2.72  1503300
##  6 NOC     187.  188.     -0.630 1773800
##  7 NOC     189.  189.      0.140 1010400
##  8 NOC     189   185.      4.14  1099200
##  9 NOC     185.  186.     -0.690 1062100
## 10 NOC     181   184.     -3.21  1532800
## # ℹ 8,734 more rows

summarise with groups

stocks2 %>%
    group_by(symbol) %>%
    summarise(Total_volume = sum(volume)) %>%
    arrange(desc(Total_volume))
## # A tibble: 4 × 2
##   symbol Total_volume
##   <chr>         <dbl>
## 1 WMT     52427479200
## 2 UNH      7643991700
## 3 UPS      7343796600
## 4 NOC      2065643400