Import stock prices
stocks <- tq_get(c("HD", "LOW", "TGT"),
get = "stock.prices",
from = "2016-01-01",
to = "2019-07-04")
stocks
## # A tibble: 2,643 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 HD 2016-01-04 130. 131. 129. 131. 8050900 111.
## 2 HD 2016-01-05 131. 132. 130. 130. 5320900 111.
## 3 HD 2016-01-06 129 130. 129. 129. 8199600 110.
## 4 HD 2016-01-07 127. 128. 125. 125. 12551000 107.
## 5 HD 2016-01-08 126. 127. 124. 124. 7104500 105.
## 6 HD 2016-01-11 125. 126. 124. 126. 6811600 107.
## 7 HD 2016-01-12 127. 129. 126. 127. 5695700 108.
## 8 HD 2016-01-13 127. 127. 121. 121. 8932200 103.
## 9 HD 2016-01-14 121. 122. 118. 120. 13389100 102.
## 10 HD 2016-01-15 117. 121. 116. 119. 10515000 101.
## # … with 2,633 more rows
Plot stock prices
stocks %>%
ggplot(aes(x = date, y = adjusted, color = symbol)) +
geom_line()

apply 2
filter rows
stocks
## # A tibble: 2,643 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 HD 2016-01-04 130. 131. 129. 131. 8050900 111.
## 2 HD 2016-01-05 131. 132. 130. 130. 5320900 111.
## 3 HD 2016-01-06 129 130. 129. 129. 8199600 110.
## 4 HD 2016-01-07 127. 128. 125. 125. 12551000 107.
## 5 HD 2016-01-08 126. 127. 124. 124. 7104500 105.
## 6 HD 2016-01-11 125. 126. 124. 126. 6811600 107.
## 7 HD 2016-01-12 127. 129. 126. 127. 5695700 108.
## 8 HD 2016-01-13 127. 127. 121. 121. 8932200 103.
## 9 HD 2016-01-14 121. 122. 118. 120. 13389100 102.
## 10 HD 2016-01-15 117. 121. 116. 119. 10515000 101.
## # … with 2,633 more rows
filter(stocks, adjusted > 110)
## # A tibble: 790 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 HD 2016-01-04 130. 131. 129. 131. 8050900 111.
## 2 HD 2016-01-05 131. 132. 130. 130. 5320900 111.
## 3 HD 2016-03-14 128. 130. 128. 129. 3653200 110.
## 4 HD 2016-03-15 129. 130. 129. 130. 4033900 111.
## 5 HD 2016-03-16 130. 131. 129. 130. 3609600 112.
## 6 HD 2016-03-17 130. 131. 129. 131. 4130900 112.
## 7 HD 2016-03-18 131. 132. 131. 131. 8069200 112.
## 8 HD 2016-03-21 132. 132. 130. 131. 3817000 112.
## 9 HD 2016-03-22 131. 131. 130. 131. 3946500 112.
## 10 HD 2016-03-23 131. 131. 130. 130. 3625300 111.
## # … with 780 more rows
arange rows
arrange(stocks, desc(low))
## # A tibble: 2,643 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 HD 2018-09-11 213 215. 212. 214. 5969500 193.
## 2 HD 2018-09-20 212. 213. 211. 211. 4020800 191.
## 3 HD 2018-09-12 214. 215. 211. 212. 5660100 191.
## 4 HD 2018-09-19 212 213. 211. 212. 2579100 191.
## 5 HD 2018-09-21 211. 213. 211. 212. 9749200 192.
## 6 HD 2019-07-03 210. 213. 210. 212. 2183700 196.
## 7 HD 2019-06-20 210. 212. 209. 211. 5171500 195.
## 8 HD 2019-06-21 211. 212. 209. 209. 9855000 193.
## 9 HD 2018-09-13 211. 211. 209. 209. 4701100 189.
## 10 HD 2019-07-02 210. 210. 208. 210. 3160500 194.
## # … with 2,633 more rows
select columns
select(stocks, open:low, adjusted)
## # A tibble: 2,643 × 4
## open high low adjusted
## <dbl> <dbl> <dbl> <dbl>
## 1 130. 131. 129. 111.
## 2 131. 132. 130. 111.
## 3 129 130. 129. 110.
## 4 127. 128. 125. 107.
## 5 126. 127. 124. 105.
## 6 125. 126. 124. 107.
## 7 127. 129. 126. 108.
## 8 127. 127. 121. 103.
## 9 121. 122. 118. 102.
## 10 117. 121. 116. 101.
## # … with 2,633 more rows
add columns
mutate(stocks, highlowdif = high - low)
## # A tibble: 2,643 × 9
## symbol date open high low close volume adjusted highlowdif
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 HD 2016-01-04 130. 131. 129. 131. 8050900 111. 1.62
## 2 HD 2016-01-05 131. 132. 130. 130. 5320900 111. 1.89
## 3 HD 2016-01-06 129 130. 129. 129. 8199600 110. 1.34
## 4 HD 2016-01-07 127. 128. 125. 125. 12551000 107. 3.18
## 5 HD 2016-01-08 126. 127. 124. 124. 7104500 105. 3.03
## 6 HD 2016-01-11 125. 126. 124. 126. 6811600 107. 1.99
## 7 HD 2016-01-12 127. 129. 126. 127. 5695700 108. 2.97
## 8 HD 2016-01-13 127. 127. 121. 121. 8932200 103. 6.5
## 9 HD 2016-01-14 121. 122. 118. 120. 13389100 102. 3.32
## 10 HD 2016-01-15 117. 121. 116. 119. 10515000 101. 5.05
## # … with 2,633 more rows
summarize with groups
stocks
## # A tibble: 2,643 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 HD 2016-01-04 130. 131. 129. 131. 8050900 111.
## 2 HD 2016-01-05 131. 132. 130. 130. 5320900 111.
## 3 HD 2016-01-06 129 130. 129. 129. 8199600 110.
## 4 HD 2016-01-07 127. 128. 125. 125. 12551000 107.
## 5 HD 2016-01-08 126. 127. 124. 124. 7104500 105.
## 6 HD 2016-01-11 125. 126. 124. 126. 6811600 107.
## 7 HD 2016-01-12 127. 129. 126. 127. 5695700 108.
## 8 HD 2016-01-13 127. 127. 121. 121. 8932200 103.
## 9 HD 2016-01-14 121. 122. 118. 120. 13389100 102.
## 10 HD 2016-01-15 117. 121. 116. 119. 10515000 101.
## # … with 2,633 more rows
group_by(stocks, symbol)
## # A tibble: 2,643 × 8
## # Groups: symbol [3]
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 HD 2016-01-04 130. 131. 129. 131. 8050900 111.
## 2 HD 2016-01-05 131. 132. 130. 130. 5320900 111.
## 3 HD 2016-01-06 129 130. 129. 129. 8199600 110.
## 4 HD 2016-01-07 127. 128. 125. 125. 12551000 107.
## 5 HD 2016-01-08 126. 127. 124. 124. 7104500 105.
## 6 HD 2016-01-11 125. 126. 124. 126. 6811600 107.
## 7 HD 2016-01-12 127. 129. 126. 127. 5695700 108.
## 8 HD 2016-01-13 127. 127. 121. 121. 8932200 103.
## 9 HD 2016-01-14 121. 122. 118. 120. 13389100 102.
## 10 HD 2016-01-15 117. 121. 116. 119. 10515000 101.
## # … with 2,633 more rows