2017-05-30 72 views
0

我尝试确定开始日期和结束日期2个不同的时间间隔。计算循环中的日期间隔和天数

每个间隔被定义为:

  • 最小:我的DF的最小日期。
  • 最大:最大日期减去一些固定的滞后(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) 

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

+0

你能提供一个重复的例子,数据输出? – www

+0

我编辑了一些随机数据@ycw – xxxvinxxx

+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)) 
+0

'周期'是一个'lubridate'函数,它允许您按周间隔操作日期。 lubridate还包括类似于此的功能秒,分钟,小时,天...等 –

+0

好点@ycw我已经更新我的答案是一个矢量化的版本,而不是通过for循环处理。 –

相关问题