创建时间序列对象yyyy-mm-dd hh:mm

时间:2013-04-22 08:00:28

标签: r

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

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

1 个答案:

答案 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.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