【问题标题】:how to get specific date in time series in r如何在r中获取时间序列中的特定日期
【发布时间】:2021-11-07 16:28:25
【问题描述】:

我想根据时间序列数据框制作一个预测项目。 但是,时间跨度太大了。 然后,我在时间序列数据框中的数据框中有此列。

Date
2010-06-29
2010-06-30
2010-07-01
2010-07-02

如何更改它以使其仅每 7 天显示一次?

Date
2010-06-29
2010-07-05
2010-07-12
2010-07-19
etc

【问题讨论】:

    标签: r dplyr tidyverse lubridate


    【解决方案1】:

    Daniel 的回答非常简单直接。 但是,它只会返回指定工作日的数据,根据数据的性质,这可能会导致结果有偏差。

    您可以创建一个与工作日随机抽样相平衡的工作日索引:

    # example data
    df <- data.frame(date = seq.Date(from = ymd("2021/01/01"), 
                                     to = ymd("2021/12/31"),
                                     by = "day"))
    
    #create index by sampling weekdays randomly
    
    set.seed(1)
    index<-replicate(floor(nrow(df)/7), {sample(unique(df$weekday), replace = FALSE)}) %>% 
            as.vector()
    
    #subsetting to a 7-fold smaller dataset
    
    library(dplyr)
    
    output<-df %>% filter(weekdays(date)==index)
    
    #checking table of weekdays in the final dataset
    
    table(output$weekday)
    
       Friday    Monday  Saturday    Sunday  Thursday   Tuesday Wednesday 
           13         6         5         9         8        10         6 
    

    【讨论】:

    • 如果 OP 想要偏离他们在问题中提到的固定间隔子集(例如每 7 天),他们不妨只在所有日期中抽取一个简单的统一样本(除非有每周需要恰好有一个值。如果需要每周有一个值,那么df %&gt;% group_by(week = lubridate::week(date)) %&gt;% sample_n(1) 也可以完成这项工作。
    猜你喜欢
    • 2012-12-10
    • 2019-03-07
    • 2015-06-23
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2011-06-19
    • 2021-12-23
    • 1970-01-01
    相关资源
    最近更新 更多