Description Usage Arguments Examples
View source: R/moving_average.R
This function calculates a vector moving averages based on moving date ranges.
The result is a vector containing one average per input value, or NA
if the
full range doesn't exist for a given input value. Not every day within a date
range needs to be present.
1 | moving_ave(date, value, range, center = TRUE)
|
date |
Vector of dates |
value |
Vector of values to average |
range |
Number of days to average over |
center |
Boolean, indicates whether the resulting average should be centered in the range (default) or placed at the end of the range |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | library(lubridate)
dow_jones_industrial %>% filter(date >= ymd("2009/01/01") & date <= ymd("2010/01/01")) %>%
mutate(
close_20d_ave = moving_ave(date, close, 20, center = FALSE),
close_50d_ave = moving_ave(date, close, 50, center = FALSE),
close_100d_ave = moving_ave(date, close, 100, center = FALSE)
) %>%
ggplot(aes(date, close)) +
geom_line(aes(color = "closing"), size = .25) +
geom_line(aes(date, close_20d_ave, color = "20d"), size = .75, na.rm = TRUE) +
geom_line(aes(date, close_50d_ave, color = "50d"), size = .75, na.rm = TRUE) +
geom_line(aes(date, close_100d_ave, color = "100d"), size = .75, na.rm = TRUE) +
scale_color_manual(
values = c(
closing = "black",
`20d` = "#009e73",
`50d` = "#d55e00",
`100d` = "#0072b2"
),
breaks = c("closing", "20d", "50d", "100d"),
labels = c("closing price", "20 day average", "50 day average", "100 day average"),
name = NULL,
guide = guide_legend(override.aes = list(size = c(0.25, 0.75, 0.75, 0.75)))
) +
theme_dviz_grid()
# moving ave vs. LOESS (locally estimated scatterplot smoothing)
dow_jones_industrial %>% filter(date >= ymd("2009/01/01") & date <= ymd("2010/01/01")) %>%
mutate(
close_100d_ave = moving_ave(date, close, 100)
) %>%
ggplot(aes(date, close)) +
geom_line(aes(color = "closing"), size = .25) +
geom_line(aes(date, close_100d_ave, color = "100d"), size = .75, na.rm = TRUE) +
geom_smooth(aes(color = "smooth"), size = .75, na.rm = TRUE, se = FALSE) +
scale_color_manual(
values = c(
closing = "black",
`100d` = "#d55e00",
smooth = "#0072b2"
),
breaks = c("closing", "smooth", "100d"),
labels = c("closing price", "LOESS smoother", "100 day average"),
name = NULL,
guide = guide_legend(override.aes = list(size = c(0.25, 0.75, 0.75)))
) +
theme_dviz_grid()
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.