1

给定一组热量消耗数据集,我想创建一个时间序列对象,其中年、日和小时位于不同的列中。文件数据如下所示

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

4

1 回答 1

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.POSIXctorigin参数一起使用以获取日期/时间变量。使用日期/时间变量时,永远不要忘记设置时区。

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对象,你可以使用它。

于 2013-04-22T08:15:13.933 回答