在数据帧(R)中存储润滑间隔

在数据帧(R)中存储润滑间隔,r,dataframe,intervals,lubridate,R,Dataframe,Intervals,Lubridate,我想在24小时内创建一个15分钟间隔的数据帧,从几个日期的某个inverval开始。我使用了一个循环,但是在实际间隔的瞬间,它存储了秒数,这在我的例子中是没有用的。有没有办法避免这种情况?我需要这些时间间隔来查看定时事件在这些时间间隔内发生的频率。我发现了一个类似的问题,但答案集中在使用lappy而不是apply,这在这里不适用 这是一个基本的例子: begin<-as.POSIXct(rbind("2016-03-31 09:00:00","2016-04-12 09:00:00"))

我想在24小时内创建一个15分钟间隔的数据帧,从几个日期的某个inverval开始。我使用了一个循环,但是在实际间隔的瞬间,它存储了秒数,这在我的例子中是没有用的。有没有办法避免这种情况?我需要这些时间间隔来查看定时事件在这些时间间隔内发生的频率。我发现了一个类似的问题,但答案集中在使用lappy而不是apply,这在这里不适用

这是一个基本的例子:

begin<-as.POSIXct(rbind("2016-03-31 09:00:00","2016-04-12 09:00:00"))
end<-as.POSIXct(rbind("2016-03-31 09:15:00","2016-04-12 09:15:00"))
int<-as.interval(begin,end)
aufl<-duration(15, "mins")
Intervall=data.frame()
for (j in 1:length(int)){for (i in 1:96){Intervall[j,i]<-int_shift(int[j],aufl*(i-1))}}
Intervall

begin我创建了一个答案,我希望这就是您想要的。如果没有,请评论:

library(lubridate)

begin <- as.POSIXct(rbind("2016-03-31 09:00:00","2016-04-12 09:00:00"))

# copy begin time for loop
begin_new <- begin

# create durateion object
aufl <- duration(15, "mins")

# count times for loop
times <- 24*60/15

# create dataframe with begin time
Intervall <- data.frame(begin,stringsAsFactors = FALSE)

for (i in 1:times){

  cat("test",i,"\n")

  # save old time for interval calculation
  begin_start <- begin_new
  # add 15 Minutes to original time
  begin_new <- begin_new + aufl

  cat(begin_new,"\n")

  # create an interval object between 
  new_dur <- interval(begin_start,begin_new)

  # bind to original dataframe
  Intervall <- cbind(Intervall,new_dur) 

}

# Add column names
vec_names <- paste0("v",c(1:(times+1)))
colnames(Intervall) <- vec_names
库(lubridate)

非常感谢!你的回答比我的尝试要优雅得多。只是想了解一下:“cat”在做什么?cat只是将变量
begin\u new
打印到控制台中,然后
\n
创建一个新行。这仅用于调试。如果您对答案满意,请将其标记为已解决。