Nothing
## ---- message=FALSE, warning=FALSE--------------------------------------------
library(tibbletime)
library(dplyr)
library(tidyr)
# Facebook stock prices.
data(FB)
# Only a few columns
FB <- select(FB, symbol, date, open, close, adjusted)
## -----------------------------------------------------------------------------
# The function to use at each step is `mean`.
# The window size is 5
rolling_mean <- rollify(mean, window = 5)
rolling_mean
## -----------------------------------------------------------------------------
mutate(FB, mean_5 = rolling_mean(adjusted))
## -----------------------------------------------------------------------------
rolling_mean_2 <- rollify(mean, window = 2)
rolling_mean_3 <- rollify(mean, window = 3)
rolling_mean_4 <- rollify(mean, window = 4)
FB %>% mutate(
rm10 = rolling_mean_2(adjusted),
rm20 = rolling_mean_3(adjusted),
rm30 = rolling_mean_4(adjusted)
)
## -----------------------------------------------------------------------------
# Rolling mean, but with function syntax
rolling_mean <- rollify(.f = ~mean(.x), window = 5)
mutate(FB, mean_5 = rolling_mean(adjusted))
## -----------------------------------------------------------------------------
# 5 period average of 2 columns (open and close)
rolling_avg_sum <- rollify(~ mean(.x + .y), window = 5)
mutate(FB, avg_sum = rolling_avg_sum(open, close))
## -----------------------------------------------------------------------------
FB$adjusted[1] <- NA
# Do this
rolling_mean_na <- rollify(~mean(.x, na.rm = TRUE), window = 5)
FB %>% mutate(mean_na = rolling_mean_na(adjusted))
# Don't try this!
# rolling_mean_na <- rollify(~mean(.x), window = 5)
# FB %>% mutate(mean_na = rolling_mean_na(adjusted, na.rm = TRUE))
# Reset FB
data(FB)
FB <- select(FB, symbol, date, adjusted)
## -----------------------------------------------------------------------------
# Our data frame summary
summary_df <- function(x) {
data.frame(
rolled_summary_type = c("mean", "sd", "min", "max", "median"),
rolled_summary_val = c(mean(x), sd(x), min(x), max(x), median(x))
)
}
# A rolling version, with unlist = FALSE
rolling_summary <- rollify(~summary_df(.x), window = 5,
unlist = FALSE)
FB_summarised <- mutate(FB, summary_list_col = rolling_summary(adjusted))
FB_summarised
## -----------------------------------------------------------------------------
FB_summarised %>%
filter(!is.na(summary_list_col)) %>%
unnest(cols = summary_list_col)
## -----------------------------------------------------------------------------
rolling_summary <- rollify(~summary_df(.x), window = 5,
unlist = FALSE, na_value = data.frame())
FB_summarised <- mutate(FB, summary_list_col = rolling_summary(adjusted))
FB_summarised
## -----------------------------------------------------------------------------
FB_summarised %>%
unnest(cols = summary_list_col)
## -----------------------------------------------------------------------------
rolling_summary <- rollify(~summary_df(.x), window = 5,
unlist = FALSE,
na_value = data.frame(rolled_summary_type = NA,
rolled_summary_val = NA))
FB_summarised <- mutate(FB, summary_list_col = rolling_summary(adjusted))
FB_summarised %>% unnest(cols = summary_list_col)
## -----------------------------------------------------------------------------
# Reset FB
data(FB)
rolling_lm <- rollify(.f = function(close, high, low, volume) {
lm(close ~ high + low + volume)
},
window = 5,
unlist = FALSE)
FB_reg <- mutate(FB, roll_lm = rolling_lm(close, high, low, volume))
FB_reg
## -----------------------------------------------------------------------------
FB_reg %>%
filter(!is.na(roll_lm)) %>%
mutate(tidied = purrr::map(roll_lm, broom::tidy)) %>%
unnest(tidied) %>%
select(symbol, date, term, estimate, std.error, statistic, p.value)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.