在 Dplyr 中排除 Dot 中的周末
Posted
技术标签:
【中文标题】在 Dplyr 中排除 Dot 中的周末【英文标题】:Exclude Weekends in Dot in Dplyr 【发布时间】:2022-01-21 19:37:37 【问题描述】:这是此答案的后续问题:https://***.com/a/45254762/5893585
我正在使用 prophet
包中的 dplyr
中的 do
函数。尝试此操作时,我想制作一个不包括周末的未来数据框。以下是我当前的代码:
当前数据框:
dataset
ds group y
2021-12-15 A 5
2021-12-16 A 6
2021-12-15 B 10
2021-12-16 B 7
etc etc etc
预测
library(dplyr)
library(prophet)
data = dataset %>%
group_by(group) %>%
do(predict(prophet(., daily.seasonality = TRUE, yearly.seasonality = TRUE),
make_future_dataframe(prophet(.,daily.seasonality = TRUE, yearly.seasonality = TRUE), periods = 14))) %>%
select(ds, group, yhat)
如何重写上面的代码来过滤make_future_dataframe
数据集没有周末?
我希望它看起来像这样,但这不起作用:
data = dataset %>%
group_by(group) %>%
do(predict(prophet(., daily.seasonality = TRUE, yearly.seasonality = TRUE),
make_future_dataframe(prophet(.[which(weekdays(.$ds) != 'Saturday' | weekdays(.$ds) != 'Sunday'),],daily.seasonality = TRUE, yearly.seasonality = TRUE), periods = 14))) %>%
select(ds, group, yhat)
【问题讨论】:
【参考方案1】:我们可以在预测之前删除周末:
df %>%
group_by(group) %>%
mutate(weekdays = weekdays(ds)) %>%
filter(weekdays != "Saturday" & weekdays != "Sunday") %>%
do(predict(prophet(., daily.seasonality = TRUE, yearly.seasonality = TRUE),
make_future_dataframe(prophet(.[which(weekdays(.$ds) != 'Saturday' | weekdays(.$ds) != 'Sunday'),],daily.seasonality = TRUE, yearly.seasonality = TRUE), periods = 14))) %>%
select(ds, group, yhat)
【讨论】:
谢谢,由于某种原因,输出仍然包含周末数据。知道为什么会这样吗? 这是在 make_future_dataframe 部分中使用点的准确方法吗?make_future_dataframe(prophet(.[which(weekdays(.$ds) != 'Saturday' | weekdays(.$ds) != 'Sunday')
?以上是关于在 Dplyr 中排除 Dot 中的周末的主要内容,如果未能解决你的问题,请参考以下文章