Import stock prices

stocks <- tq_get(c("NKE", "COKE", "ULTA", "AMZN", "AAPL"),
                 get = "stock.prices",
                 from = "2016-01-01")
stocks
## # A tibble: 10,930 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 NKE    2016-01-04  61.1  61.9  60.9  61.5 11626800     55.7
##  2 NKE    2016-01-05  61.7  62.6  61.7  62.4  9220600     56.5
##  3 NKE    2016-01-06  61.3  62.0  61.2  61.5  6551600     55.7
##  4 NKE    2016-01-07  60.4  61.3  59.8  59.8 10881300     54.2
##  5 NKE    2016-01-08  60.1  60.8  58.7  58.9 11191300     53.3
##  6 NKE    2016-01-11  59.0  60.0  58.5  59.5 12825000     53.9
##  7 NKE    2016-01-12  60.3  60.8  59.6  59.9  8292200     54.3
##  8 NKE    2016-01-13  60.5  60.5  58.7  58.8  9944300     53.2
##  9 NKE    2016-01-14  59    59.3  57.3  58.5  9989000     53.0
## 10 NKE    2016-01-15  56.9  58.1  56.6  57.6 12208300     52.1
## # ℹ 10,920 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(adjusted > 24)
## # A tibble: 10,809 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 NKE    2016-01-04  61.1  61.9  60.9  61.5 11626800     55.7
##  2 NKE    2016-01-05  61.7  62.6  61.7  62.4  9220600     56.5
##  3 NKE    2016-01-06  61.3  62.0  61.2  61.5  6551600     55.7
##  4 NKE    2016-01-07  60.4  61.3  59.8  59.8 10881300     54.2
##  5 NKE    2016-01-08  60.1  60.8  58.7  58.9 11191300     53.3
##  6 NKE    2016-01-11  59.0  60.0  58.5  59.5 12825000     53.9
##  7 NKE    2016-01-12  60.3  60.8  59.6  59.9  8292200     54.3
##  8 NKE    2016-01-13  60.5  60.5  58.7  58.8  9944300     53.2
##  9 NKE    2016-01-14  59    59.3  57.3  58.5  9989000     53.0
## 10 NKE    2016-01-15  56.9  58.1  56.6  57.6 12208300     52.1
## # ℹ 10,799 more rows

Arrange rows

arrange(stocks, desc(open), desc(high), desc(low))
## # A tibble: 10,930 × 8
##    symbol date        open  high   low close volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>  <dbl>    <dbl>
##  1 COKE   2024-08-23 1362. 1374. 1348. 1350   50100    1350 
##  2 COKE   2024-09-05 1352. 1370. 1333. 1348.  62400    1348.
##  3 COKE   2024-08-26 1352. 1360  1332  1340.  39500    1340.
##  4 COKE   2024-09-10 1351. 1361. 1286. 1288.  60900    1288.
##  5 COKE   2024-09-03 1347. 1360. 1320. 1329.  57300    1329.
##  6 COKE   2024-09-06 1345. 1368. 1325. 1330.  52200    1330.
##  7 COKE   2024-09-09 1339. 1377. 1339. 1351.  80500    1351.
##  8 COKE   2024-08-28 1335. 1335. 1314. 1328.  50000    1328.
##  9 COKE   2024-08-27 1334. 1340  1332. 1334.  37300    1334.
## 10 COKE   2024-08-29 1330  1335. 1323. 1326.  36400    1326.
## # ℹ 10,920 more rows
arrange(stocks, desc(close), desc(volume), desc(adjusted))
## # A tibble: 10,930 × 8
##    symbol date        open  high   low close volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>  <dbl>    <dbl>
##  1 COKE   2024-08-22 1325. 1370  1325. 1356.  54900    1356.
##  2 COKE   2024-09-04 1324. 1368. 1323. 1352.  60700    1352.
##  3 COKE   2024-09-09 1339. 1377. 1339. 1351.  80500    1351.
##  4 COKE   2024-08-23 1362. 1374. 1348. 1350   50100    1350 
##  5 COKE   2024-09-05 1352. 1370. 1333. 1348.  62400    1348.
##  6 COKE   2024-08-30 1326. 1342. 1317  1342.  54000    1342.
##  7 COKE   2024-08-26 1352. 1360  1332  1340.  39500    1340.
##  8 COKE   2024-08-27 1334. 1340  1332. 1334.  37300    1334.
##  9 COKE   2024-09-06 1345. 1368. 1325. 1330.  52200    1330.
## 10 COKE   2024-09-03 1347. 1360. 1320. 1329.  57300    1329.
## # ℹ 10,920 more rows
arrange(stocks, desc(date))
## # A tibble: 10,930 × 8
##    symbol date         open   high    low  close   volume adjusted
##    <chr>  <date>      <dbl>  <dbl>  <dbl>  <dbl>    <dbl>    <dbl>
##  1 NKE    2024-09-10   79.6   79.6   77.6   78.1  9748400     78.1
##  2 COKE   2024-09-10 1351.  1361.  1286.  1288.     60900   1288. 
##  3 ULTA   2024-09-10  378.   378.   356.   374.   2032500    374. 
##  4 AMZN   2024-09-10  177.   180.   177.   180.  36233800    180. 
##  5 AAPL   2024-09-10  219.   221.   217.   220.  51591000    220. 
##  6 NKE    2024-09-09   80.8   81.6   79.0   79.5  8003300     79.5
##  7 COKE   2024-09-09 1339.  1377.  1339.  1351.     80500   1351. 
##  8 ULTA   2024-09-09  368.   384.   368    382.   1498300    382. 
##  9 AMZN   2024-09-09  175.   176.   174.   175.  29037400    175. 
## 10 AAPL   2024-09-09  221.   221.   217.   221.  67180000    221. 
## # ℹ 10,920 more rows

Select columns

select(stocks, date) 
## # A tibble: 10,930 × 1
##    date      
##    <date>    
##  1 2016-01-04
##  2 2016-01-05
##  3 2016-01-06
##  4 2016-01-07
##  5 2016-01-08
##  6 2016-01-11
##  7 2016-01-12
##  8 2016-01-13
##  9 2016-01-14
## 10 2016-01-15
## # ℹ 10,920 more rows
select(stocks, date, open, close, volume) 
## # A tibble: 10,930 × 4
##    date        open close   volume
##    <date>     <dbl> <dbl>    <dbl>
##  1 2016-01-04  61.1  61.5 11626800
##  2 2016-01-05  61.7  62.4  9220600
##  3 2016-01-06  61.3  61.5  6551600
##  4 2016-01-07  60.4  59.8 10881300
##  5 2016-01-08  60.1  58.9 11191300
##  6 2016-01-11  59.0  59.5 12825000
##  7 2016-01-12  60.3  59.9  8292200
##  8 2016-01-13  60.5  58.8  9944300
##  9 2016-01-14  59    58.5  9989000
## 10 2016-01-15  56.9  57.6 12208300
## # ℹ 10,920 more rows
select(stocks, date, open, close, volume, adjusted) 
## # A tibble: 10,930 × 5
##    date        open close   volume adjusted
##    <date>     <dbl> <dbl>    <dbl>    <dbl>
##  1 2016-01-04  61.1  61.5 11626800     55.7
##  2 2016-01-05  61.7  62.4  9220600     56.5
##  3 2016-01-06  61.3  61.5  6551600     55.7
##  4 2016-01-07  60.4  59.8 10881300     54.2
##  5 2016-01-08  60.1  58.9 11191300     53.3
##  6 2016-01-11  59.0  59.5 12825000     53.9
##  7 2016-01-12  60.3  59.9  8292200     54.3
##  8 2016-01-13  60.5  58.8  9944300     53.2
##  9 2016-01-14  59    58.5  9989000     53.0
## 10 2016-01-15  56.9  57.6 12208300     52.1
## # ℹ 10,920 more rows
select(stocks, date, open, close, starts_with("60")) 
## # A tibble: 10,930 × 3
##    date        open close
##    <date>     <dbl> <dbl>
##  1 2016-01-04  61.1  61.5
##  2 2016-01-05  61.7  62.4
##  3 2016-01-06  61.3  61.5
##  4 2016-01-07  60.4  59.8
##  5 2016-01-08  60.1  58.9
##  6 2016-01-11  59.0  59.5
##  7 2016-01-12  60.3  59.9
##  8 2016-01-13  60.5  58.8
##  9 2016-01-14  59    58.5
## 10 2016-01-15  56.9  57.6
## # ℹ 10,920 more rows

Add columns

mutate(stocks)
## # A tibble: 10,930 × 8
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 NKE    2016-01-04  61.1  61.9  60.9  61.5 11626800     55.7
##  2 NKE    2016-01-05  61.7  62.6  61.7  62.4  9220600     56.5
##  3 NKE    2016-01-06  61.3  62.0  61.2  61.5  6551600     55.7
##  4 NKE    2016-01-07  60.4  61.3  59.8  59.8 10881300     54.2
##  5 NKE    2016-01-08  60.1  60.8  58.7  58.9 11191300     53.3
##  6 NKE    2016-01-11  59.0  60.0  58.5  59.5 12825000     53.9
##  7 NKE    2016-01-12  60.3  60.8  59.6  59.9  8292200     54.3
##  8 NKE    2016-01-13  60.5  60.5  58.7  58.8  9944300     53.2
##  9 NKE    2016-01-14  59    59.3  57.3  58.5  9989000     53.0
## 10 NKE    2016-01-15  56.9  58.1  56.6  57.6 12208300     52.1
## # ℹ 10,920 more rows

Summarise with groups

stocks %>% 
    # Group by volume
    group_by(volume)
## # A tibble: 10,930 × 8
## # Groups:   volume [9,233]
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 NKE    2016-01-04  61.1  61.9  60.9  61.5 11626800     55.7
##  2 NKE    2016-01-05  61.7  62.6  61.7  62.4  9220600     56.5
##  3 NKE    2016-01-06  61.3  62.0  61.2  61.5  6551600     55.7
##  4 NKE    2016-01-07  60.4  61.3  59.8  59.8 10881300     54.2
##  5 NKE    2016-01-08  60.1  60.8  58.7  58.9 11191300     53.3
##  6 NKE    2016-01-11  59.0  60.0  58.5  59.5 12825000     53.9
##  7 NKE    2016-01-12  60.3  60.8  59.6  59.9  8292200     54.3
##  8 NKE    2016-01-13  60.5  60.5  58.7  58.8  9944300     53.2
##  9 NKE    2016-01-14  59    59.3  57.3  58.5  9989000     53.0
## 10 NKE    2016-01-15  56.9  58.1  56.6  57.6 12208300     52.1
## # ℹ 10,920 more rows
#  Sort it 

stocks %>% 
arrange(adjusted)
## # A tibble: 10,930 × 8
##    symbol date        open  high   low close    volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
##  1 AAPL   2016-05-12  23.2  23.2  22.4  22.6 305258800     20.7
##  2 AAPL   2016-05-13  22.5  22.9  22.5  22.6 177571200     20.8
##  3 AAPL   2016-06-27  23.2  23.3  22.9  23.0 181958400     21.1
##  4 AAPL   2016-01-27  24.0  24.2  23.3  23.4 533478800     21.2
##  5 AAPL   2016-05-11  23.4  23.4  23.1  23.1 114876400     21.2
##  6 AAPL   2016-05-06  23.3  23.4  23.0  23.2 174799600     21.3
##  7 AAPL   2016-05-09  23.2  23.4  23.1  23.2 131745600     21.3
##  8 AAPL   2016-01-28  23.4  23.6  23.1  23.5 222715200     21.3
##  9 AAPL   2016-05-02  23.5  23.5  23.1  23.4 192640400     21.3
## 10 AAPL   2016-02-11  23.4  23.7  23.1  23.4 200298800     21.4
## # ℹ 10,920 more rows