【问题标题】:Automatically create date sequences with different starting dates in R在 R 中自动创建具有不同开始日期的日期序列
【发布时间】:2012-01-30 16:20:41
【问题描述】:

我可以使用以下代码创建所需的日期序列:

DateTwoWeeks1 <- seq(as.Date("2010/8/6"), as.Date("2011/8/5"), by = "2 weeks")
DateTwoWeeks2 <- seq(as.Date("2010/8/7"), as.Date("2011/8/5"), by = "2 weeks")
DateTwoWeeks3 <- seq(as.Date("2010/8/8"), as.Date("2011/8/5"), by = "2 weeks")

但是,我想自动为 14 个不同的开始日期创建日期序列。我想要一个从 2010 年 8 月 6 日开始的时间序列,下一个从 7 日开始的时间序列,以此类推,直到 2010 年 8 月 19 日。

如何实现自动化?我尝试使用“粘贴”功能,但无法使以下代码工作:

for (i in 6:19){
TimeTwoWeeks[i] <- seq(as.Date(paste("2010/8/", i)), as.Date("2011/8/5"), by = "2 weeks")
}

非常感谢任何直接帮助或与其他网站/帖子的链接。

【问题讨论】:

    标签: r date


    【解决方案1】:

    给你:

    TimeTwoWeeks <- lapply(as.Date("2010/8/6") + 0:13, 
                           function(X) seq(X, as.Date("2011/8/5"), by = "2 weeks"))
    

    【讨论】:

    • 您可以将lapply 调用简化为lapply(as.Date('2010-08-06') + 0:13, seq, as.Date('2011/08/05'), '2 weeks')
    【解决方案2】:

    如果要创建时间序列列表,可以进行如下调整:

    TimeTwoWeeks <- list()
    
    for (i in 6:19){
    TimeTwoWeeks[[i-5]] <- seq(as.Date(paste("2010/8/", i)), as.Date("2011/8/5"), by = "2 weeks")
    }
    

    【讨论】:

    • 您可能希望使用i-5 对列表进行索引,以避免列表开头出现5 个NULL 列表元素。
    • 感谢大家帮助我。您的所有建议都非常有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2020-01-25
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 2015-11-30
    相关资源
    最近更新 更多