0

これらのヘッダーの下に多くの値を持つデータ フレームがあるとします。

df <- data.frame(c("Tid", "Value"))
#Tid.format = %Y-%m-%d %H:%M

次に、時系列として処理したいので、そのデータ フレームを Zoo に渡します。

library("zoo")
df <- zoo(df$Value, df$Tid)

ここで、各測定が行われた時刻 (つまり、日付情報を破棄し、時間のみを保持する) の滑らかな散布図を作成したいと考えています。 -help/2009-March/191302.html

しかし、time() 関数はまったく時間を生成しないようです。代わりに、数列を生成するだけです。そのリンクから何をしても、平均的な日の値の散布図を取得できません。(動物園の時系列を使用せずに) 実際に機能する data.frame コードは次のようになります (つまり、時間から時間を抽出して数値に変換します)。

smoothScatter(data.frame(as.numeric(format(df$Tid,"%H")),df$Value)

もう 1 つやりたいことは、1 時間あたりの測定数の密度プロットを作成することです。問題なく通常の data.frame を使用して時間をプロットしたので、私が持っているデータは問題ありません。しかし、zoo を使用して実行しようとすると、エラーが発生するか、Google で見つけたものを試したときに間違った結果が得られます。

私はこの行を通して何かをプロットすることができました:

plot(density(as.numeric(trunc(time(df),"01:00:00"))))

しかし、それは正しくありません。1 から 217 までのシーケンスを生成しているように見えますが、日付情報を切り捨てて、時間を時間単位で丸めておきたいと思っていました。

私はこれをプロットすることができます:

plot(density(df))

これにより、値の密度プロットが生成されます。しかし、1 日の 1 時間あたりに記録された値の数に関する密度プロットが必要です。

それで、誰かがこれを整理するのを手伝ってくれたら、それは素晴らしいことです. 要するに、私がやりたいことは次のとおりです。

1) SmoothScatter (x 軸: 時刻 (0-24)、y 軸: 値)

2) plot(density(x 軸: 時刻 (0-24)))

編集:

library("zoo")
df <- data.frame(Tid=strptime(c("2011-01-14 12:00:00","2011-01-31 07:00:00","2011-02-05 09:36:00","2011-02-27 10:19:00"),"%Y-%m-%d %H:%M"),Values=c(50,52,51,52))
df <- zoo(df$Values,df$Tid)
summary(df)
df.hr <- aggregate(df, trunc(df, "hours"), mean)
summary(df.hr)
png("temp.png")
plot(df.hr)
dev.off()

このコードは、私が持っている実際の値です。「df.hr」のプロットは 1 時間ごとの平均であると予想していましたが、代わりに、まったく時間ではない奇妙な新しいインデックスが得られます...

4

1 に答える 1

0

質問の集計ステートメントには 3 つの問題があります。

  1. ではない時間を切り捨てたいと思いdfます。

  2. trunc.POSIXt残念ながらPOSIXlt結果を返すため、元に変換する必要がありますPOSIXct

  3. そもそも時間に切り詰めるつもりはなかったようですが、時間を抽出したかったのです。

最初の 2 つの点に対処するには、aggregateステートメントを次のように変更する必要があります。

tt <- as.POSIXct(trunc(time(df), "hours"))
aggregate(df, tt, mean)

しかし、最後の点に対処するには、完全に変更する必要があります

tt <- as.POSIXlt(time(df))$hour
aggregate(df, tt, mean)
于 2013-05-20T16:49:49.277 に答える