我想创建一个时间序列对象给定一个热耗数据集,其中年,日和小时在不同的列中。文件数据如下所示
rdays heat[J] ds.jdate ds.hh ds.dow ds.tod ds.diy ds.wiy
0 1000 12965 2 6 2 182 26
0.0416 1150 12965 3 6 2 182 26
解释变量是:
rdays: 'Running days', No. of days from the start of the data set
(obs 1 = 0, obs 2 = 1/24, ...)
Information on time:
jdate: Julian date (No. of days since 1Jan1960)
hh: Time of day (0,...,23)
dow: Day of week (1=monday, ... , 7=sunday)
tod: Type of day (1=Working day, 2=Half-Holy (incl. Saturday),
3=Holy (incl. Sunday))
diy: Day in year
wiy: Week in year
开始时间为01Jul1995 02:00,结束时间为30Jun1996 23:00
答案 0 :(得分:3)
DF <- read.table(text="rdays heat[J] ds.jdate ds.hh ds.dow ds.tod ds.diy ds.wiy
0 1000 12965 2 6 2 182 26
0.0416 1150 12965 3 6 2 182 26 ",header=TRUE)
计算自1960-01-01以来的秒数,然后使用as.POSIXct
和origin
参数来获取日期/时间变量。使用日期/时间变量时,不要忘记设置时区。
DF$time <- as.POSIXct(DF$ds.jdate*24*3600+DF$ds.hh*3600,
origin=as.POSIXct("1960-01-01 00:00:00",tz="GMT"),tz="GMT")
为方便起见,创建一个xts
时间序列。
library(xts)
as.xts(DF[,2,drop=FALSE],order.by=DF$time)
# heat.J.
# 1995-07-01 02:00:00 1000
# 1995-07-01 03:00:00 1150
如果您需要as.ts
对象,可以使用ts
。