2016-04-15 6 views
0

私は四半期ごとのデータを集計しようとしていますが、エラーメッセージのタイプ(リスト)が無効です。リストはPOSIXltのリストであり、私は前もって細かく、毎時のデータを集計していますが、以前はこのエラーは見たことがありません。リストを別のタイプに変換する必要がありますか?もしそうなら、15分のデータを引き出すことができますか?ここに私のコードは、私は、任意の助けを本当に感謝:難解集計R POSIXltリスト:無効なタイプリストエラーメッセージ

seq_start <- as.POSIXct("2015-09-10 01:00:00 BST") 

Arrivals <- floor(runif(60, min = 1, max = 14)) 
Minute_Seq <- seq(trunc(seq_start, units='mins'), by='1 mins',length = 60) 
Arrival_board = data.frame(Minute_Seq,Arrivals) 

Arrival_board$QTR= as.POSIXlt(round(as.double(Arrival_board$Minute_Seq)/(5*60))*(5*60),origin=(as.POSIXlt('1970-01-01'))) 
arrive_stats <- aggregate(Arrival_board$Arrivals ~ Arrival_board$QTR, Arrival_board, FUN=mean) 
+0

このエラーを複製するデータのサンプルを投稿できますか? – lmo

+0

'as.POSIXct'を' as.POSIXlt'で使用したい場合は 'as.POSIXct'が必要です。 –

答えて

0

POSIXltではなくPOSIXctを使用して、リストのタイプである:ここで

aggregate(Arrivals ~ QTR, transform(Arrival_board, QTR=as.POSIXct(QTR)), FUN=mean) 
+0

ありがとうございます。私はそれが簡単な解決策であることを知っていたので、私は今POSIXctとPOSIXltの違いを最後に理解していると思います。 – alkey

0

は、あなたのQTRの発現によって、あなたのデータをビニングに代わるものです。これは、seq.Dateコマンドとcutコマンドを使用します。これは、よりまっすぐ除算ラウンドよりも、複数のです:

seq_start <- as.POSIXct("2015-09-10 01:00:00 BST") 
Arrivals <- floor(runif(60, min = 1, max = 14)) 
Minute_Seq <- seq(trunc(seq_start, units='mins'), by='1 mins',length = 60) 
Arrival_board = data.frame(Minute_Seq,Arrivals) 

QTR= seq(trunc(seq_start, units='mins'), by='5 mins',length = 13) 
Arrival_board$QTR = cut(Arrival_board$Minute_Seq,QTR) 

arrive_stats <- aggregate(Arrival_board$Arrivals ~ QTR, Arrival_board, FUN=mean) 

ビンは結果にわずかな変化があるだろうに定義されているかの違いに行います。この場合、5分のウィンドウで修正するには、seq_start時間を2分で変更してください。

QTR= seq(trunc(seq_start-(2*60), units='mins'), by='5 mins',length = 14)