2017-01-24 33 views
1

どのようなヘルプも素晴らしいでしょう。日付による時間間隔サブ設定の計算方法は?

私はこの1つのように見えるdata.frameあります

Date  Time 
1 2015-06-30 14:30:00 
2 2015-06-30 14:35:00 
3 2015-06-30 14:40:00 
4 2015-07-03 00:25:00 
5 2015-07-03 03:27:00 

そして、私は新しい列を追加したいと思います。この新しい列では、各行は、日付を考慮して、現在の行と前の行との間の時間差を有することになる。

例:

Date  Time  Diff (min) 
1 2015-06-30 14:30:00 0  
2 2015-06-30 14:35:00 5 
3 2015-06-30 14:40:00 5 
4 2015-07-03 00:25:00 0 
5 2015-07-03 03:27:00 182 

各日付の1行目の差分がゼロでなければなりません。 Diffは分単位である必要はありません。

私が見つけたすべての例では、減算を行うために行アプローチを使用しませんでした。

どのように私はRでこれを行うことができましたか?

ありがとうございます。

+0

かなり簡単です。 datetimeカラムに変換し、 'ave'を使用して、各日付内で別々に' difftime'を適用します。あなたは、このプロセスでどこに詰まっているのかを示す必要があります。これらのステップはすべて何度も説明されており、正確な重複がない場合は驚くでしょう。 –

+0

@rawr:何か他のものだったら、キャラクターにコアーを貼り付けないでしょうか? –

+0

@ 42-私は答えを待っていたので、私はdputを追加しようとしていた – rawr

答えて

0

ここでは、ループを回避することによって、よりRのような方法で段階的な解決策を示します。コード内のコメントは、ロジックを説明する必要があります。

df<-read.table(header=TRUE, sep= " ", 
text= "Date Time 
2015-06-30 14:30:00 
2015-06-30 14:35:00 
2015-06-30 14:40:00 
2015-07-03 00:25:00 
2015-07-03 03:27:00") 

#find time difference 
delta<-diff(as.POSIXct(paste(df$Date, df$Time))) 

#determine if across different days by finding difference 
#if deltadays >0 then difference days and setting delta to 0 
delta[diff(as.Date(df$Date)) >0]<-0 

#add zero in front 
delta<-c(0, delta) 
#create desired dataframe 
df<-cbind(df, diff=delta) 

Rには時間オブジェクト(日付オブジェクトまたはdatetimeオブジェクトのみ)がないため、差分を計算するために日付と時刻の列を結合する必要があります。 Rで時間オブジェクトを使用する方法はありますが、それにはchronなどの追加パッケージを追加する必要がありますが、この場合、計算のためにオンザフライでdatetimeオブジェクトを作成する方が簡単です。

関連する問題