Apply the dplyr verbs you learned in chapter 5
Filter rows
stocks %>% filter(symbol=="WMT",adjusted > 24)
## # A tibble: 250 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2025-01-02 90.0 90.6 89.5 90 14820400 88.6
## 2 WMT 2025-01-03 90.2 91.3 90.1 90.8 10834600 89.4
## 3 WMT 2025-01-06 90.8 92.5 90.7 91.4 14519900 90.0
## 4 WMT 2025-01-07 91.7 91.9 90.4 90.8 11238000 89.4
## 5 WMT 2025-01-08 91.1 91.8 90.8 91.8 13453600 90.4
## 6 WMT 2025-01-10 92.5 93.6 92.2 93 18140900 91.5
## 7 WMT 2025-01-13 92.1 92.4 91.1 91.5 18617100 90.1
## 8 WMT 2025-01-14 91.9 92.0 90.6 90.8 13549200 89.4
## 9 WMT 2025-01-15 91.1 91.7 90.8 91.3 17348200 89.9
## 10 WMT 2025-01-16 91.5 91.7 90.1 91.3 13267700 89.9
## # ℹ 240 more rows
stocks %>% filter(symbol=="WMT"& adjusted > 24)
## # A tibble: 250 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2025-01-02 90.0 90.6 89.5 90 14820400 88.6
## 2 WMT 2025-01-03 90.2 91.3 90.1 90.8 10834600 89.4
## 3 WMT 2025-01-06 90.8 92.5 90.7 91.4 14519900 90.0
## 4 WMT 2025-01-07 91.7 91.9 90.4 90.8 11238000 89.4
## 5 WMT 2025-01-08 91.1 91.8 90.8 91.8 13453600 90.4
## 6 WMT 2025-01-10 92.5 93.6 92.2 93 18140900 91.5
## 7 WMT 2025-01-13 92.1 92.4 91.1 91.5 18617100 90.1
## 8 WMT 2025-01-14 91.9 92.0 90.6 90.8 13549200 89.4
## 9 WMT 2025-01-15 91.1 91.7 90.8 91.3 17348200 89.9
## 10 WMT 2025-01-16 91.5 91.7 90.1 91.3 13267700 89.9
## # ℹ 240 more rows
stocks %>% filter(symbol=="WMT"|symbol=="TGT")
## # A tibble: 500 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2025-01-02 90.0 90.6 89.5 90 14820400 88.6
## 2 WMT 2025-01-03 90.2 91.3 90.1 90.8 10834600 89.4
## 3 WMT 2025-01-06 90.8 92.5 90.7 91.4 14519900 90.0
## 4 WMT 2025-01-07 91.7 91.9 90.4 90.8 11238000 89.4
## 5 WMT 2025-01-08 91.1 91.8 90.8 91.8 13453600 90.4
## 6 WMT 2025-01-10 92.5 93.6 92.2 93 18140900 91.5
## 7 WMT 2025-01-13 92.1 92.4 91.1 91.5 18617100 90.1
## 8 WMT 2025-01-14 91.9 92.0 90.6 90.8 13549200 89.4
## 9 WMT 2025-01-15 91.1 91.7 90.8 91.3 17348200 89.9
## 10 WMT 2025-01-16 91.5 91.7 90.1 91.3 13267700 89.9
## # ℹ 490 more rows
stocks %>% filter(symbol%in% c("WMT","TGT"))
## # A tibble: 500 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2025-01-02 90.0 90.6 89.5 90 14820400 88.6
## 2 WMT 2025-01-03 90.2 91.3 90.1 90.8 10834600 89.4
## 3 WMT 2025-01-06 90.8 92.5 90.7 91.4 14519900 90.0
## 4 WMT 2025-01-07 91.7 91.9 90.4 90.8 11238000 89.4
## 5 WMT 2025-01-08 91.1 91.8 90.8 91.8 13453600 90.4
## 6 WMT 2025-01-10 92.5 93.6 92.2 93 18140900 91.5
## 7 WMT 2025-01-13 92.1 92.4 91.1 91.5 18617100 90.1
## 8 WMT 2025-01-14 91.9 92.0 90.6 90.8 13549200 89.4
## 9 WMT 2025-01-15 91.1 91.7 90.8 91.3 17348200 89.9
## 10 WMT 2025-01-16 91.5 91.7 90.1 91.3 13267700 89.9
## # ℹ 490 more rows
Arrange rows
stocks %>% arrange(adjusted)
## # A tibble: 500 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2025-04-08 85.8 87.0 81.0 81.8 34351700 80.7
## 2 TGT 2025-11-20 86.2 86.9 83.4 83.7 12051800 81.4
## 3 WMT 2025-04-04 85.6 87.4 82.7 83.2 36209000 82.1
## 4 TGT 2025-10-10 89.2 89.2 85.4 85.5 13925200 82.2
## 5 TGT 2025-11-24 87.6 88.0 84.5 84.5 9227300 82.3
## 6 WMT 2025-04-07 80.2 86.3 79.8 83.8 36884900 82.7
## 7 WMT 2025-03-13 84.9 85.4 83.9 84.5 31507800 83.2
## 8 TGT 2025-09-22 88.0 88.1 86.3 86.6 12449500 83.2
## 9 TGT 2025-04-08 96.5 97.5 87.3 88.8 13408900 83.4
## 10 WMT 2025-03-25 86.8 87.3 84.6 84.8 27908600 83.7
## # ℹ 490 more rows
stocks %>% arrange(desc(adjusted))
## # A tibble: 500 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 TGT 2025-01-27 138. 143. 137. 142. 5331600 133.
## 2 TGT 2025-01-10 139. 143 138. 142. 5882800 132.
## 3 TGT 2025-01-28 143 145. 141. 141. 4141500 131.
## 4 TGT 2025-01-30 141. 142. 139. 140. 2792000 131.
## 5 TGT 2025-01-29 141. 142. 140. 140. 3279200 131.
## 6 TGT 2025-01-06 137. 140. 137. 139. 4937900 130.
## 7 TGT 2025-01-07 140. 142. 138. 139. 4166100 130.
## 8 TGT 2025-01-13 141. 141. 138. 139. 4061900 129.
## 9 TGT 2025-01-08 139 139. 136. 138. 4663400 129.
## 10 TGT 2025-01-31 140. 140. 137. 138. 4056400 129.
## # ℹ 490 more rows
arrange(stocks, desc(symbol), desc(date))
## # A tibble: 500 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2025-12-31 112. 112. 111. 111. 11487400 111.
## 2 WMT 2025-12-30 112. 113. 112. 112. 11730600 111.
## 3 WMT 2025-12-29 112. 113. 112. 113. 12979600 112.
## 4 WMT 2025-12-26 112. 112. 111. 112. 9003800 111.
## 5 WMT 2025-12-24 111. 112. 111. 112. 9009600 111.
## 6 WMT 2025-12-23 112. 112. 111. 111. 20319900 110.
## 7 WMT 2025-12-22 114. 114. 112. 113. 21473900 112.
## 8 WMT 2025-12-19 115. 115. 114. 114. 50043800 114.
## 9 WMT 2025-12-18 115. 116. 115. 115. 21476700 114.
## 10 WMT 2025-12-17 115. 116. 115. 116. 16177800 115.
## # ℹ 490 more rows
Select Columns
select(stocks, date, symbol)
## # A tibble: 500 × 2
## date symbol
## <date> <chr>
## 1 2025-01-02 WMT
## 2 2025-01-03 WMT
## 3 2025-01-06 WMT
## 4 2025-01-07 WMT
## 5 2025-01-08 WMT
## 6 2025-01-10 WMT
## 7 2025-01-13 WMT
## 8 2025-01-14 WMT
## 9 2025-01-15 WMT
## 10 2025-01-16 WMT
## # ℹ 490 more rows
select(stocks, date, symbol, open, close)
## # A tibble: 500 × 4
## date symbol open close
## <date> <chr> <dbl> <dbl>
## 1 2025-01-02 WMT 90.0 90
## 2 2025-01-03 WMT 90.2 90.8
## 3 2025-01-06 WMT 90.8 91.4
## 4 2025-01-07 WMT 91.7 90.8
## 5 2025-01-08 WMT 91.1 91.8
## 6 2025-01-10 WMT 92.5 93
## 7 2025-01-13 WMT 92.1 91.5
## 8 2025-01-14 WMT 91.9 90.8
## 9 2025-01-15 WMT 91.1 91.3
## 10 2025-01-16 WMT 91.5 91.3
## # ℹ 490 more rows
select(stocks, date, symbol, open, close, adjusted)
## # A tibble: 500 × 5
## date symbol open close adjusted
## <date> <chr> <dbl> <dbl> <dbl>
## 1 2025-01-02 WMT 90.0 90 88.6
## 2 2025-01-03 WMT 90.2 90.8 89.4
## 3 2025-01-06 WMT 90.8 91.4 90.0
## 4 2025-01-07 WMT 91.7 90.8 89.4
## 5 2025-01-08 WMT 91.1 91.8 90.4
## 6 2025-01-10 WMT 92.5 93 91.5
## 7 2025-01-13 WMT 92.1 91.5 90.1
## 8 2025-01-14 WMT 91.9 90.8 89.4
## 9 2025-01-15 WMT 91.1 91.3 89.9
## 10 2025-01-16 WMT 91.5 91.3 89.9
## # ℹ 490 more rows
select(stocks, date, symbol, starts_with ("a"))
## # A tibble: 500 × 3
## date symbol adjusted
## <date> <chr> <dbl>
## 1 2025-01-02 WMT 88.6
## 2 2025-01-03 WMT 89.4
## 3 2025-01-06 WMT 90.0
## 4 2025-01-07 WMT 89.4
## 5 2025-01-08 WMT 90.4
## 6 2025-01-10 WMT 91.5
## 7 2025-01-13 WMT 90.1
## 8 2025-01-14 WMT 89.4
## 9 2025-01-15 WMT 89.9
## 10 2025-01-16 WMT 89.9
## # ℹ 490 more rows
select(stocks, date, symbol, contains("price"))
## # A tibble: 500 × 2
## date symbol
## <date> <chr>
## 1 2025-01-02 WMT
## 2 2025-01-03 WMT
## 3 2025-01-06 WMT
## 4 2025-01-07 WMT
## 5 2025-01-08 WMT
## 6 2025-01-10 WMT
## 7 2025-01-13 WMT
## 8 2025-01-14 WMT
## 9 2025-01-15 WMT
## 10 2025-01-16 WMT
## # ℹ 490 more rows
select(stocks, date, symbol, ends_with("ed"))
## # A tibble: 500 × 3
## date symbol adjusted
## <date> <chr> <dbl>
## 1 2025-01-02 WMT 88.6
## 2 2025-01-03 WMT 89.4
## 3 2025-01-06 WMT 90.0
## 4 2025-01-07 WMT 89.4
## 5 2025-01-08 WMT 90.4
## 6 2025-01-10 WMT 91.5
## 7 2025-01-13 WMT 90.1
## 8 2025-01-14 WMT 89.4
## 9 2025-01-15 WMT 89.9
## 10 2025-01-16 WMT 89.9
## # ℹ 490 more rows
select(stocks, date, symbol, everything())
## # A tibble: 500 × 8
## date symbol open high low close volume adjusted
## <date> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2025-01-02 WMT 90.0 90.6 89.5 90 14820400 88.6
## 2 2025-01-03 WMT 90.2 91.3 90.1 90.8 10834600 89.4
## 3 2025-01-06 WMT 90.8 92.5 90.7 91.4 14519900 90.0
## 4 2025-01-07 WMT 91.7 91.9 90.4 90.8 11238000 89.4
## 5 2025-01-08 WMT 91.1 91.8 90.8 91.8 13453600 90.4
## 6 2025-01-10 WMT 92.5 93.6 92.2 93 18140900 91.5
## 7 2025-01-13 WMT 92.1 92.4 91.1 91.5 18617100 90.1
## 8 2025-01-14 WMT 91.9 92.0 90.6 90.8 13549200 89.4
## 9 2025-01-15 WMT 91.1 91.7 90.8 91.3 17348200 89.9
## 10 2025-01-16 WMT 91.5 91.7 90.1 91.3 13267700 89.9
## # ℹ 490 more rows
Add columns
stocks %>% mutate(price_change = close-open)
## # A tibble: 500 × 9
## symbol date open high low close volume adjusted price_change
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2025-01-02 90.0 90.6 89.5 90 14820400 88.6 0.0200
## 2 WMT 2025-01-03 90.2 91.3 90.1 90.8 10834600 89.4 0.630
## 3 WMT 2025-01-06 90.8 92.5 90.7 91.4 14519900 90.0 0.600
## 4 WMT 2025-01-07 91.7 91.9 90.4 90.8 11238000 89.4 -0.890
## 5 WMT 2025-01-08 91.1 91.8 90.8 91.8 13453600 90.4 0.690
## 6 WMT 2025-01-10 92.5 93.6 92.2 93 18140900 91.5 0.510
## 7 WMT 2025-01-13 92.1 92.4 91.1 91.5 18617100 90.1 -0.590
## 8 WMT 2025-01-14 91.9 92.0 90.6 90.8 13549200 89.4 -1.07
## 9 WMT 2025-01-15 91.1 91.7 90.8 91.3 17348200 89.9 0.270
## 10 WMT 2025-01-16 91.5 91.7 90.1 91.3 13267700 89.9 -0.200
## # ℹ 490 more rows
stocks %>% mutate(price_change = (close-open)/open*100)
## # A tibble: 500 × 9
## symbol date open high low close volume adjusted price_change
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 WMT 2025-01-02 90.0 90.6 89.5 90 14820400 88.6 0.0222
## 2 WMT 2025-01-03 90.2 91.3 90.1 90.8 10834600 89.4 0.699
## 3 WMT 2025-01-06 90.8 92.5 90.7 91.4 14519900 90.0 0.661
## 4 WMT 2025-01-07 91.7 91.9 90.4 90.8 11238000 89.4 -0.971
## 5 WMT 2025-01-08 91.1 91.8 90.8 91.8 13453600 90.4 0.757
## 6 WMT 2025-01-10 92.5 93.6 92.2 93 18140900 91.5 0.551
## 7 WMT 2025-01-13 92.1 92.4 91.1 91.5 18617100 90.1 -0.640
## 8 WMT 2025-01-14 91.9 92.0 90.6 90.8 13549200 89.4 -1.16
## 9 WMT 2025-01-15 91.1 91.7 90.8 91.3 17348200 89.9 0.296
## 10 WMT 2025-01-16 91.5 91.7 90.1 91.3 13267700 89.9 -0.219
## # ℹ 490 more rows
mutate(stocks,
gain = close - open) %>%
select(date, symbol, gain)
## # A tibble: 500 × 3
## date symbol gain
## <date> <chr> <dbl>
## 1 2025-01-02 WMT 0.0200
## 2 2025-01-03 WMT 0.630
## 3 2025-01-06 WMT 0.600
## 4 2025-01-07 WMT -0.890
## 5 2025-01-08 WMT 0.690
## 6 2025-01-10 WMT 0.510
## 7 2025-01-13 WMT -0.590
## 8 2025-01-14 WMT -1.07
## 9 2025-01-15 WMT 0.270
## 10 2025-01-16 WMT -0.200
## # ℹ 490 more rows
mutate(stocks,
gain = close - open) %>%
select(gain)
## # A tibble: 500 × 1
## gain
## <dbl>
## 1 0.0200
## 2 0.630
## 3 0.600
## 4 -0.890
## 5 0.690
## 6 0.510
## 7 -0.590
## 8 -1.07
## 9 0.270
## 10 -0.200
## # ℹ 490 more rows
transmute(stocks,
gain = close - open)
## # A tibble: 500 × 1
## gain
## <dbl>
## 1 0.0200
## 2 0.630
## 3 0.600
## 4 -0.890
## 5 0.690
## 6 0.510
## 7 -0.590
## 8 -1.07
## 9 0.270
## 10 -0.200
## # ℹ 490 more rows
Summarize with groups
stocks %>% group_by(symbol)%>%
summarize(avg_price=mean(adjusted,na.rm=TRUE))
## # A tibble: 2 × 2
## symbol avg_price
## <chr> <dbl>
## 1 TGT 97.5
## 2 WMT 98.0