Import stock prices
stocks <- tq_get(c("IFX.DE", "NXPI"),
get = "stock.prices",
from = "2025-01-01",
to = "2026-01-01")
stocks
## # A tibble: 503 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 IFX.DE 2025-01-02 31.3 32.0 30.9 31.4 3387601 30.9
## 2 IFX.DE 2025-01-03 31.3 31.3 30.5 31 2736099 30.5
## 3 IFX.DE 2025-01-06 31.5 33.5 31.4 33.3 7005897 32.7
## 4 IFX.DE 2025-01-07 33.3 34.0 33.2 34.0 4455990 33.4
## 5 IFX.DE 2025-01-08 33.7 33.8 32.6 32.7 3304826 32.2
## 6 IFX.DE 2025-01-09 32.2 32.6 32.2 32.3 2419930 31.7
## 7 IFX.DE 2025-01-10 32.2 32.5 31.7 32.2 3111140 31.7
## 8 IFX.DE 2025-01-13 31.8 32.5 31.2 32.5 3424739 31.9
## 9 IFX.DE 2025-01-14 32.9 33.3 32.7 32.8 2842022 32.3
## 10 IFX.DE 2025-01-15 32.8 34.1 32.7 33.4 4122889 32.8
## # ℹ 493 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(date >= "2025-01-01" & date <= "2025-01-31")
## # A tibble: 42 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 IFX.DE 2025-01-02 31.3 32.0 30.9 31.4 3387601 30.9
## 2 IFX.DE 2025-01-03 31.3 31.3 30.5 31 2736099 30.5
## 3 IFX.DE 2025-01-06 31.5 33.5 31.4 33.3 7005897 32.7
## 4 IFX.DE 2025-01-07 33.3 34.0 33.2 34.0 4455990 33.4
## 5 IFX.DE 2025-01-08 33.7 33.8 32.6 32.7 3304826 32.2
## 6 IFX.DE 2025-01-09 32.2 32.6 32.2 32.3 2419930 31.7
## 7 IFX.DE 2025-01-10 32.2 32.5 31.7 32.2 3111140 31.7
## 8 IFX.DE 2025-01-13 31.8 32.5 31.2 32.5 3424739 31.9
## 9 IFX.DE 2025-01-14 32.9 33.3 32.7 32.8 2842022 32.3
## 10 IFX.DE 2025-01-15 32.8 34.1 32.7 33.4 4122889 32.8
## # ℹ 32 more rows
arrange rows
stocks %>% arrange(desc(date))
## # A tibble: 503 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NXPI 2025-12-31 220. 220. 217. 217. 1413000 215.
## 2 IFX.DE 2025-12-30 36.8 37.7 36.8 37.7 2024272 37.4
## 3 NXPI 2025-12-30 221. 223. 220. 220. 1746100 218.
## 4 IFX.DE 2025-12-29 36.8 37.0 36.3 36.7 2354027 36.5
## 5 NXPI 2025-12-29 222. 224. 219. 220. 2498400 219.
## 6 NXPI 2025-12-26 226. 226. 223. 223. 1439700 221.
## 7 NXPI 2025-12-24 226. 228. 225. 225. 1031000 223.
## 8 IFX.DE 2025-12-23 36.6 36.9 36.5 36.7 1729190 36.4
## 9 NXPI 2025-12-23 227. 228. 224. 226. 1871300 224.
## 10 IFX.DE 2025-12-22 36.1 36.9 36.1 36.7 2872269 36.4
## # ℹ 493 more rows
select columns
stocks %>% select(symbol, date, adjusted)
## # A tibble: 503 × 3
## symbol date adjusted
## <chr> <date> <dbl>
## 1 IFX.DE 2025-01-02 30.9
## 2 IFX.DE 2025-01-03 30.5
## 3 IFX.DE 2025-01-06 32.7
## 4 IFX.DE 2025-01-07 33.4
## 5 IFX.DE 2025-01-08 32.2
## 6 IFX.DE 2025-01-09 31.7
## 7 IFX.DE 2025-01-10 31.7
## 8 IFX.DE 2025-01-13 31.9
## 9 IFX.DE 2025-01-14 32.3
## 10 IFX.DE 2025-01-15 32.8
## # ℹ 493 more rows
add columns
stocks %>%
group_by(symbol) %>%
arrange(date) %>%
mutate(price_change = adjusted - lag(adjusted))
## # A tibble: 503 × 9
## # Groups: symbol [2]
## symbol date open high low close volume adjusted price_change
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 IFX.DE 2025-01-02 31.3 32.0 30.9 31.4 3387601 30.9 NA
## 2 NXPI 2025-01-02 210. 212. 205. 206. 1424300 201. NA
## 3 IFX.DE 2025-01-03 31.3 31.3 30.5 31 2736099 30.5 -0.388
## 4 NXPI 2025-01-03 207. 210. 205 209. 2308100 203. 2.58
## 5 IFX.DE 2025-01-06 31.5 33.5 31.4 33.3 7005897 32.7 2.24
## 6 NXPI 2025-01-06 210. 216. 210. 213. 1972700 208. 4.43
## 7 IFX.DE 2025-01-07 33.3 34.0 33.2 34.0 4455990 33.4 0.669
## 8 NXPI 2025-01-07 214. 219. 211. 213. 2312200 207. -0.808
## 9 IFX.DE 2025-01-08 33.7 33.8 32.6 32.7 3304826 32.2 -1.23
## 10 NXPI 2025-01-08 212. 213. 207. 210. 2302600 204. -2.78
## # ℹ 493 more rows
summarise with groups
stocks %>%
group_by(symbol) %>%
summarise(
average_price = mean(adjusted, na.rm = TRUE),
number_of_days = n()
)
## # A tibble: 2 × 3
## symbol average_price number_of_days
## <chr> <dbl> <int>
## 1 IFX.DE 33.8 253
## 2 NXPI 208. 250