Import stock prices
stocks <- tq_get(c("GRMN", "MTN", "NVDA", "AAPL"),
get = "stock.prices",
from = "2016-01-01")
stocks
## # A tibble: 8,744 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 GRMN 2016-01-04 36.6 36.9 36.3 36.8 2050100 28.6
## 2 GRMN 2016-01-05 37 37.3 36.8 36.9 1305500 28.7
## 3 GRMN 2016-01-06 36.4 36.6 35.8 35.9 2521400 27.9
## 4 GRMN 2016-01-07 35.4 35.6 34.8 34.9 1688900 27.1
## 5 GRMN 2016-01-08 35.1 35.3 33.5 33.5 2429400 26.0
## 6 GRMN 2016-01-11 33.9 34.0 32.8 33.2 2416400 25.8
## 7 GRMN 2016-01-12 33.7 33.7 32.7 33.2 1729800 25.7
## 8 GRMN 2016-01-13 33.3 33.5 32.4 32.5 1552500 25.2
## 9 GRMN 2016-01-14 32.7 33.4 32.1 33.2 1973300 25.8
## 10 GRMN 2016-01-15 32.1 32.8 32.0 32.5 2168800 25.2
## # ℹ 8,734 more rows
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(symbol == "GRMN", adjusted > 35)
## # A tibble: 2,055 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 GRMN 2016-07-12 44.1 44.7 44.1 44.7 1251700 35.6
## 2 GRMN 2016-07-13 44.8 44.8 44.2 44.3 540200 35.3
## 3 GRMN 2016-07-14 44.9 45.3 44.6 44.7 762100 35.6
## 4 GRMN 2016-07-15 44.9 45.1 44.7 45.0 670000 35.8
## 5 GRMN 2016-07-18 45.2 45.7 45.1 45.4 783800 36.2
## 6 GRMN 2016-07-19 45.4 45.8 45.2 45.7 703100 36.3
## 7 GRMN 2016-07-20 45.7 46.0 45.4 45.7 503500 36.4
## 8 GRMN 2016-07-21 45.6 45.9 45.4 45.7 477400 36.4
## 9 GRMN 2016-07-22 45.7 46.1 45.6 46.0 486600 36.7
## 10 GRMN 2016-07-25 46.1 46.1 45.7 45.9 964500 36.6
## # ℹ 2,045 more rows
Arrange rows
arrange(stocks, desc(high), desc(low))
## # A tibble: 8,744 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 MTN 2021-11-08 374. 376. 364. 364. 282200 331.
## 2 MTN 2021-11-05 362. 373. 359. 373. 327300 339.
## 3 MTN 2021-11-09 364. 364. 353. 359. 204200 327.
## 4 MTN 2021-11-10 358. 363. 353. 356. 162200 324.
## 5 MTN 2021-10-25 354. 361. 351. 352. 139000 320.
## 6 MTN 2021-11-03 354. 360. 352. 356. 190400 323.
## 7 MTN 2021-11-04 356. 358. 351. 356. 150200 323.
## 8 MTN 2021-11-11 357. 358. 345. 352. 240900 320.
## 9 MTN 2021-11-12 352. 357. 349. 355. 296000 323.
## 10 MTN 2021-11-15 355. 357. 350. 351. 225100 319.
## # ℹ 8,734 more rows
Select columns
select(stocks, symbol, high, low)
## # A tibble: 8,744 × 3
## symbol high low
## <chr> <dbl> <dbl>
## 1 GRMN 36.9 36.3
## 2 GRMN 37.3 36.8
## 3 GRMN 36.6 35.8
## 4 GRMN 35.6 34.8
## 5 GRMN 35.3 33.5
## 6 GRMN 34.0 32.8
## 7 GRMN 33.7 32.7
## 8 GRMN 33.5 32.4
## 9 GRMN 33.4 32.1
## 10 GRMN 32.8 32.0
## # ℹ 8,734 more rows
Add columns
mutate(stocks,
gain = high - low)
## # A tibble: 8,744 × 9
## symbol date open high low close volume adjusted gain
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 GRMN 2016-01-04 36.6 36.9 36.3 36.8 2050100 28.6 0.620
## 2 GRMN 2016-01-05 37 37.3 36.8 36.9 1305500 28.7 0.560
## 3 GRMN 2016-01-06 36.4 36.6 35.8 35.9 2521400 27.9 0.770
## 4 GRMN 2016-01-07 35.4 35.6 34.8 34.9 1688900 27.1 0.790
## 5 GRMN 2016-01-08 35.1 35.3 33.5 33.5 2429400 26.0 1.85
## 6 GRMN 2016-01-11 33.9 34.0 32.8 33.2 2416400 25.8 1.13
## 7 GRMN 2016-01-12 33.7 33.7 32.7 33.2 1729800 25.7 0.990
## 8 GRMN 2016-01-13 33.3 33.5 32.4 32.5 1552500 25.2 1.10
## 9 GRMN 2016-01-14 32.7 33.4 32.1 33.2 1973300 25.8 1.36
## 10 GRMN 2016-01-15 32.1 32.8 32.0 32.5 2168800 25.2 0.730
## # ℹ 8,734 more rows
Summerise with group
stocks
## # A tibble: 8,744 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 GRMN 2016-01-04 36.6 36.9 36.3 36.8 2050100 28.6
## 2 GRMN 2016-01-05 37 37.3 36.8 36.9 1305500 28.7
## 3 GRMN 2016-01-06 36.4 36.6 35.8 35.9 2521400 27.9
## 4 GRMN 2016-01-07 35.4 35.6 34.8 34.9 1688900 27.1
## 5 GRMN 2016-01-08 35.1 35.3 33.5 33.5 2429400 26.0
## 6 GRMN 2016-01-11 33.9 34.0 32.8 33.2 2416400 25.8
## 7 GRMN 2016-01-12 33.7 33.7 32.7 33.2 1729800 25.7
## 8 GRMN 2016-01-13 33.3 33.5 32.4 32.5 1552500 25.2
## 9 GRMN 2016-01-14 32.7 33.4 32.1 33.2 1973300 25.8
## 10 GRMN 2016-01-15 32.1 32.8 32.0 32.5 2168800 25.2
## # ℹ 8,734 more rows
# average high price
summarise(stocks, Average_high = mean(high, na.rm = TRUE))
## # A tibble: 1 × 1
## Average_high
## <dbl>
## 1 110.