【问题标题】:Exclude Weekends in Dot in Dplyr在 Dplyr 中排除 Dot 中的周末
【发布时间】:2022-01-21 19:37:37
【问题描述】:

这是此答案的后续问题:https://stackoverflow.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)

【问题讨论】:

    标签: r dplyr nested-loops facebook-prophet


    【解决方案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')?
    猜你喜欢
    • 2017-07-23
    • 2019-04-02
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 2017-01-03
    • 1970-01-01
    相关资源
    最近更新 更多