0

初心者の質問です。(新しい情報を追加)

ランダムに収集された一連のタイムスタンプ付きデータがあります。プロットのマトリックスを作成したいのですが、散布図または xyplot & 時間オブジェクトを使用して作成できませんでした。

私のデータ

dataset$Time  #POSIX time objects (no set sampling period)
              #i built POSIX time objects by dataset$Time<-strptime(tt, "%H:%M:%OS")
              #the origial string was formated like this 12:12:12.234 (HH:MM:SS:msec)
dataset$d1, dataset$d2 #integers
dataset$d3 #factor with 10 levels

.

私はこれらを行うことができます

plot( dataset$Time, dataset$d1)
scatterplot(dataset$d1 ~ dataset$d2 | dataset$d3, data=dataset)
xyplot(dataset$d1 ~ dataset$d2 | dataset$d3, data=dataset)

ただし、これらはできません(x軸のPOSIX時間オブジェクト)

scatterplot(dataset$d1 ~ dataset$Time | dataset$d3, data=dataset)
xyplot(dataset$d1 ~ dataset$Time | dataset$d3, data=dataset)

(新着情報)

構造体 (.Internal(as.POSIXct(x, tz)) のエラー、クラス = c("POSIXt", "POSIXct")、: 無効な 'x' 引数。

新しい情報)しかし、これは機能します(Y軸のPOSIX時間オブジェクト)

xyplot(dataset$Time ~ dataset$d1 | dataset$d3, data=dataset)

関連しますが、別の質問はhexbinです。時間オブジェクトが hexbin に追加されると、hexbin からのプロットは単位で正しい時間形式を表示しません。

bin<-hexbin(dataset$Time, dataset$d1) 
plot(bin))

私は何をすべきか?

調べてくれてありがとう!!

4

3 に答える 3

2

どうやらRはPOSIX時間の中毒を扱うのにいくつかの問題を抱えています...それは私にエラーを与えます:

+.POSIXt(x [floor(d)]、x [ceiling(d)])のエラー:「POSIXt」オブジェクトに対してバイナリ'+'が定義されていません

それらを数値にキャストするだけで、機能するはずです。対応する軸を非表示にして、後で正しい日付で再描画できます

例えば:

scatterplot(dataset$d1 ~ as.numeric(dataset$Time) | dataset$d3, data=dataset, xaxt="n")
axis(1, at=as.numeric(dataset$Time), labels=dataset$Time, cex.axis=0.5)
于 2010-06-22T07:17:31.583 に答える
2

私にとってはうまくいくので、おそらく時間ベクトルの形式が悪いでしょう。電話すると何が得られますclass(dataset$Time)か? これが機能するには、「POSIXct」が含まれている必要があります。

一方、 を指定するdataset$場合は式を入力する必要はありませんdata=dataset

于 2010-06-22T07:45:53.963 に答える
2

これが実際の例です。データ形式が間違っている可能性があります。正確なデータ形式に注意する必要があります。

まず、単純なデータ フレーム:

R> X <- data.frame(pt=Sys.Date()+0:4, x1=100+cumsum(rnorm(5)),
+                                     x2=90+cumsum(rt(5,4)))
R> X
          pt     x1    x2
1 2010-06-22  98.73 90.33
2 2010-06-23  99.43 89.56
3 2010-06-24  98.85 86.95
4 2010-06-25  99.08 88.52
5 2010-06-26 100.30 94.08
R> 

これが格子を使わない、いわゆるワイドフォルムです。それを長い形式に変換する必要があります。ここで使用します。reshape パッケージからも使用できます。stack()cast()melt()

R> Y <- data.frame(pt=rep(X$pt,2), stack(X, select=c(x1,x2)))
R> Y
           pt values ind
1  2010-06-22  98.73  x1
2  2010-06-23  99.43  x1
3  2010-06-24  98.85  x1
4  2010-06-25  99.08  x1
5  2010-06-26 100.30  x1
6  2010-06-22  90.33  x2
7  2010-06-23  89.56  x2
8  2010-06-24  86.95  x2
9  2010-06-25  88.52  x2
10 2010-06-26  94.08  x2
R> 

呼び出しxyplotは単純です:

R> xyplot(values ~ pt | ind, data=Y, panel=panel.lines)

もちろん、もっと複雑な条件式を使用することもできます。

于 2010-06-22T11:57:23.077 に答える