2016-08-28 17 views
1

を返し、私は5分単位でデータをaggreagateしようとしているが、XTSを使って、意味:R:集計時系列データは、NA

library(xts) 
data <- read.csv("C:/Users/User/Documents/data.csv") 
times <- data$Time 
X <- as.POSIXct(times) 
X <- as.xts(X) 
DataTable <- period.apply(X, endpoints(X, "minutes", 5), mean) 

プリントアウト「のDataTable」は、それが凝集がdidnのことを示していた場合に問題があり、集計スコアは空です(NA)。ここで

2016-08-28 21:26:32 NA 
2016-08-28 21:29:05 NA 
2016-08-28 21:30:57 NA 
2016-08-28 21:34:31 NA 
2016-08-28 21:35:22 NA 
2016-08-28 21:37:31 NA 
2016-08-28 21:40:15 NA 
2016-08-28 21:43:59 NA 
2016-08-28 21:48:01 NA 
2016-08-28 21:48:58 NA 
2016-08-28 21:49:14 NA 
2016-08-28 22:40:45 NA 
2016-08-28 23:40:45 NA 

は、入力ファイルです:https://www.dropbox.com/s/epkbk770ajksqnb/data.csv?dl=0

誰も私が間違ってやっているか知っていますか?

答えて

1

数値フィールドではなく、Xを引数として集計すると問題が発生しました(例:T1またはT2)。

library(xts) 
    mydata <- read.csv("data.csv") 
    times  <- mydata$Time 
    X   <- as.POSIXct(times) 
    X   <- as.xts(X) 
    period.apply(mydata$T1, INDEX = endpoints(X, "minutes", 5), function(x) mean(x, na.rm=T)) 
+0

ありがとうございました。あなたが私を助けるかもしれない別の質問がありますか? 5分間隔でティックを集計するにはどうすればいいですか?私のCSVファイルに別の列を追加し、各エンタープライズに「1」を入力してから5分ごとに追加する必要がありますか? – user3256536

+0

@ user3256536あなたは大歓迎です。ダニ?プロットの意味ですか?私はちょうど目盛りを設定するために 'breaks'オプションを使う必要があると思います。 –

+0

'cut'と' breaks'を使用する際の問題は、ブレークを時間や分などの所定の値にしか設定できないことです.5分に設定することはできません。 私の悪い、そうすることができます... DataTable < - テーブル(カット(データ、ブレーク= "5分")) '解決策です。 – user3256536

0

問題は、時間だけで作成したため、xtsオブジェクトにデータがないことです。コードのあなたの最初のブロックは同等です:

library(xts) 
data <- read.csv("C:/Users/User/Documents/data.csv") 
X <- as.xts(as.POSIXct(data$Time)) 

あなたがデータとXTSのオブジェクトを作成する場合は、あなたのperiod.apply呼び出しが正常に動作します。

X <- as.xts(read.zoo("C:/Users/User/Documents/data.csv", sep=",", header=TRUE)) 
DataTable <- period.apply(X, endpoints(X, "minutes", 5), mean)