3

私はこのような時系列を持っています(分の値):

   "timestamp", value 
    "2012-04-09 05:03:00",2
    "2012-04-09 05:04:00",4
    "2012-04-09 05:05:00",5
    "2012-04-09 05:06:00",0
    "2012-04-09 05:07:00",0
    "2012-04-09 05:08:00",3
    "2012-04-09 05:09:00",0
    "2012-04-09 05:10:00",1

これらの値を 1 時間ごとにプロットする簡単な方法はありますか: X 軸は 1 から 24 時間 (または 0 と 23) です。つまり、5 時間の 5:00 から 5:59 までのすべての値などです。日付には依存しません。その日の時間に興味があるだけです。ありがとうございました!

追加の質問: これを箱ひげ図としてプロットできますか? 現在plot(df$hh,df$coredata.._data..)は動物園形式です。

4

3 に答える 3

4

Zoo オブジェクトzを作成するデータを読み取り、変数を作成hourしてプロットします。

library(zoo)

# read in data
Lines <- ' "timestamp", value 
    "2012-04-09 05:03:00",2
    "2012-04-09 05:04:00",4
    "2012-04-09 05:05:00",5
    "2012-04-09 05:06:00",0
    "2012-04-09 05:07:00",0
    "2012-04-09 05:08:00",3
    "2012-04-09 05:09:00",0
    "2012-04-09 05:10:00",1
'
z <- read.zoo(text = Lines, header = TRUE, sep = ",", tz = "")

# plot
hour <- as.POSIXlt(time(z))$hour
plot(hour, z)

スクリーンショット

于 2013-04-17T14:29:33.113 に答える
3

xtsパッケージを使用すると、ジェネリック.indexhour関数を使用して xts オブジェクトのインデックスを時間にフォーマットできます。

たとえば、データを読み取り、

dat <- read.zoo(text='timestamp, value 
    "2012-04-09 05:03:00",2
    "2012-04-09 05:04:00",4
    "2012-04-09 05:05:00",5
    "2012-04-09 05:06:00",0
    "2012-04-09 05:07:00",0
    "2012-04-09 05:08:00",3
    "2012-04-09 05:09:00",0
    "2012-04-09 05:10:00",1',header=TRUE,tz='',index=0:1,sep=',')

transform(dat, hh = .indexhour(dat))
                    coredata.._data.. hh
2012-04-09 05:03:00                 2  5
2012-04-09 05:04:00                 4  5
2012-04-09 05:05:00                 5  5
2012-04-09 05:06:00                 0  5
2012-04-09 05:07:00                 0  5
2012-04-09 05:08:00                 3  5
2012-04-09 05:09:00                 0  5
2012-04-09 05:10:00                 1  5
于 2013-04-17T13:21:08.313 に答える
3

これらの時間をPOSIXltクラスに変換"hours"し、sapply を使用してベクトルを返すことで、結果のリストからそれぞれのコンポーネントを抽出することで、時間のベクトルを取得できます。これを元のデータフレームに追加できます。

df <- read.table( text = "timestamp, value 
    2012-04-09 05:03:00,2
    2012-04-09 05:04:00,4
    2012-04-09 05:05:00,5
    2012-04-09 05:06:00,0
    2012-04-09 05:07:00,0
    2012-04-09 05:08:00,3
    2012-04-09 05:09:00,0
    2012-04-09 05:10:00,1" , h = T , sep = "," )

# Convert to POSIX class
df$timestamp <- as.POSIXlt(df$timestamp)

# Each entry in timestamp has some hidden attributes
attributes(df$timestamp[1])
$names
# [1] "sec"   "min"   "hour"  "mday"  "mon"   "year"  "wday"  "yday"  "isdst"

hours <- sapply( seq_len( nrow( df ) ) , function(x) df$timestamp[x]$hour )

df$hours <- hours

df
#               timestamp value hours
#   1 2012-04-09 05:03:00     2     5
#   2 2012-04-09 05:04:00     4     5
#   3 2012-04-09 05:05:00     5     5
#   4 2012-04-09 05:06:00     0     5
#   5 2012-04-09 05:07:00     0     5
#   6 2012-04-09 05:08:00     3     5
#   7 2012-04-09 05:09:00     0     5
#   8 2012-04-09 05:10:00     1     5
于 2013-04-17T12:38:36.097 に答える