Import stock prices
stocks <- tq_get(c("TM", "SBUX", "AEO", "BBWI"),
get = "stock.prices",
from = "2016-01-01",
to = "2017-01-01")
stocks
## # A tibble: 1,008 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 TM 2016-01-04 122. 122. 120. 121. 413500 117.
## 2 TM 2016-01-05 122. 122. 120. 121. 306400 117.
## 3 TM 2016-01-06 119. 119. 118. 118. 277600 114.
## 4 TM 2016-01-07 116. 117. 115. 116. 407500 112.
## 5 TM 2016-01-08 116. 117. 113. 113. 635800 109.
## 6 TM 2016-01-11 114. 115. 113. 115. 511500 111.
## 7 TM 2016-01-12 117. 117. 114. 116. 341200 112.
## 8 TM 2016-01-13 117. 117. 115. 115. 345800 111.
## 9 TM 2016-01-14 115. 117. 114. 116. 354100 112.
## 10 TM 2016-01-15 114. 114. 112. 113. 637000 109.
## # ℹ 998 more rows
Apply dplyr verbs
Filter rows
stocks %>% filter(adjusted > 24)
## # A tibble: 756 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 TM 2016-01-04 122. 122. 120. 121. 413500 117.
## 2 TM 2016-01-05 122. 122. 120. 121. 306400 117.
## 3 TM 2016-01-06 119. 119. 118. 118. 277600 114.
## 4 TM 2016-01-07 116. 117. 115. 116. 407500 112.
## 5 TM 2016-01-08 116. 117. 113. 113. 635800 109.
## 6 TM 2016-01-11 114. 115. 113. 115. 511500 111.
## 7 TM 2016-01-12 117. 117. 114. 116. 341200 112.
## 8 TM 2016-01-13 117. 117. 115. 115. 345800 111.
## 9 TM 2016-01-14 115. 117. 114. 116. 354100 112.
## 10 TM 2016-01-15 114. 114. 112. 113. 637000 109.
## # ℹ 746 more rows
filter(stocks, volume > 500000)
## # A tibble: 815 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 TM 2016-01-08 116. 117. 113. 113. 635800 109.
## 2 TM 2016-01-11 114. 115. 113. 115. 511500 111.
## 3 TM 2016-01-15 114. 114. 112. 113. 637000 109.
## 4 TM 2016-01-20 112. 112. 109. 112. 1000200 108.
## 5 TM 2016-01-22 115. 116. 115. 116. 595500 112.
## 6 TM 2016-01-29 119. 120. 118. 120. 746000 116.
## 7 TM 2016-02-03 116. 117. 113. 115. 622600 111.
## 8 TM 2016-02-04 115. 115. 113. 114. 560900 110.
## 9 TM 2016-02-05 112. 113. 109 110. 851100 107.
## 10 TM 2016-02-08 110. 110. 108. 109. 687700 106.
## # ℹ 805 more rows
filter(stocks, date == "2016-02-08")
## # A tibble: 4 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 TM 2016-02-08 110. 110. 108. 109. 687700 106.
## 2 SBUX 2016-02-08 53.1 54.5 52.6 54.1 21457500 45.6
## 3 AEO 2016-02-08 12.9 13.5 12.8 13.5 8234600 10.8
## 4 BBWI 2016-02-08 68.4 68.5 64.6 65.6 6156178 48.1
Arrange rows
arrange(stocks, desc(volume))
## # A tibble: 1,008 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 SBUX 2016-01-22 57.5 59.4 57.4 59.2 32820200 49.7
## 2 SBUX 2016-04-22 59.0 59.1 57.0 57.7 29836700 48.6
## 3 AEO 2016-01-08 14.0 14.2 13.1 13.2 26254600 10.6
## 4 AEO 2016-11-30 16.9 17.0 16.0 16.6 25699500 13.6
## 5 SBUX 2016-02-05 58.1 58.2 54.2 54.5 24529000 45.9
## 6 SBUX 2016-07-22 57.6 58.2 57.2 57.9 23899300 48.9
## 7 SBUX 2016-01-20 57.6 58.0 54.9 56.9 22786400 47.8
## 8 SBUX 2016-11-04 51.4 53.7 50.8 52.8 21956800 44.7
## 9 SBUX 2016-11-03 53.0 53 51.3 51.8 21847300 43.9
## 10 SBUX 2016-02-08 53.1 54.5 52.6 54.1 21457500 45.6
## # ℹ 998 more rows
arrange(stocks, desc(adjusted))
## # A tibble: 1,008 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 TM 2016-12-13 122. 123. 122. 123. 201900 123.
## 2 TM 2016-12-09 123. 123. 123. 123. 291800 123.
## 3 TM 2016-12-08 123. 123. 123. 123. 431000 123.
## 4 TM 2016-12-15 122. 122. 122. 122. 211100 122.
## 5 TM 2016-12-12 122. 122. 121. 122. 247500 122.
## 6 TM 2016-12-19 121. 122. 121. 122. 171900 122.
## 7 TM 2016-12-20 121. 122. 121. 122. 257800 122.
## 8 TM 2016-12-07 120. 122. 120. 121. 304600 121.
## 9 TM 2016-12-21 121. 121. 121 121. 87400 121.
## 10 TM 2016-12-14 122. 122. 121. 121. 161200 121.
## # ℹ 998 more rows
Select columns
select(stocks, high, low)
## # A tibble: 1,008 × 2
## high low
## <dbl> <dbl>
## 1 122. 120.
## 2 122. 120.
## 3 119. 118.
## 4 117. 115.
## 5 117. 113.
## 6 115. 113.
## 7 117. 114.
## 8 117. 115.
## 9 117. 114.
## 10 114. 112.
## # ℹ 998 more rows
select(stocks, date, open, close)
## # A tibble: 1,008 × 3
## date open close
## <date> <dbl> <dbl>
## 1 2016-01-04 122. 121.
## 2 2016-01-05 122. 121.
## 3 2016-01-06 119. 118.
## 4 2016-01-07 116. 116.
## 5 2016-01-08 116. 113.
## 6 2016-01-11 114. 115.
## 7 2016-01-12 117. 116.
## 8 2016-01-13 117. 115.
## 9 2016-01-14 115. 116.
## 10 2016-01-15 114. 113.
## # ℹ 998 more rows
Add columns
mutate(stocks,
price_difference = high - low) %>%
select(date, high, low, price_difference)
## # A tibble: 1,008 × 4
## date high low price_difference
## <date> <dbl> <dbl> <dbl>
## 1 2016-01-04 122. 120. 2.09
## 2 2016-01-05 122. 120. 1.38
## 3 2016-01-06 119. 118. 1.04
## 4 2016-01-07 117. 115. 1.18
## 5 2016-01-08 117. 113. 3.76
## 6 2016-01-11 115. 113. 1.42
## 7 2016-01-12 117. 114. 2.25
## 8 2016-01-13 117. 115. 2.82
## 9 2016-01-14 117. 114. 2.42
## 10 2016-01-15 114. 112. 2.28
## # ℹ 998 more rows
Summarize with groups
stocks %>%
group_by(symbol) %>%
summarise(price_difference = mean(high - low)) %>%
arrange(price_difference)
## # A tibble: 4 × 2
## symbol price_difference
## <chr> <dbl>
## 1 AEO 0.447
## 2 SBUX 0.924
## 3 TM 1.16
## 4 BBWI 1.40