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…
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