2016-09-10 1 views
0

24時間にわたって15分間隔でデータフレームを作成したい場合、いくつかの日付で特定の反転から開始します。私はループを使用していますが、実際の間隔の瞬間は私の場合は役に立たない秒数を格納しています。これを避ける方法はありますか?私は、これらの間隔でどのくらいの頻度でイベントが発生するかを調べるための間隔が必要です。私は1つの似たような質問を見つけましたが、答えはapplyの代わりにlapplyを使うことに集中しました。これはここでは当てはまりません。だからここデータフレームに潤滑剤間隔を保存する

は、基本的な例である:

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 

答えて

0

私は答えを作成し、私は、これはあなたが探しているものであると思います。そうでない場合は、次のようにコメントしてください。

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

ありがとうございました!あなたの答えは私の試みよりもはるかにエレガントです。ちょうど理解するために: "猫"は何をしていますか? – Valentin

+0

catは 'begin_new'という変数をコンソールに表示しています。' \ n'は新しい行を作成しています。これはデバッグ専用です。あなたの答えが満足であれば、それを解決済みとしてマークしてください。 – PhiSeu

関連する問題