计算循环中的日期间隔和天数

时间:2017-05-30 14:43:02

标签: r for-loop dplyr vectorization

我尝试以不同的间隔识别开始日期和结束日期。

每个间隔定义为:

  • 最小:我的df的最短日期。
  • max:最大日期减去一些固定滞后(1,2,3周)

对于简单的两个滞后我写道:

df <- sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 150)
dates <- as.data.frame(df)


end_1week <- max(df) - weeks(1)
min <- min(df)


end_2week <- max(df) - weeks(2)
min <- min(df)

print(paste('Sample 1 starts from',min,'to', end_1week))
print(paste('Sample 2 starts from',min,'to', end_2week))

如何将此过程矢量化为任意数量的滞后? 我们来说定义一个:

lags <- (1,2,4,8,12)

并打印每个样本的开始日期和结束日期,添加每个样本中的天数?

1 个答案:

答案 0 :(得分:1)

这可能会为您提供您正在寻找的输出

library(lubridate)

df <- sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 150)
dates <- as.data.frame(df)

lags <- c(1,2,4,8,12)
min <- min(df)
end_weeks <- max(df) - weeks(lags)

print(paste('Sample',lags,'starts from',min,'to',end_weeks))