关于r:如何创建每小时数据的时间序列?

时间:2023-09-30


我有一个小时值的数据。

1
2
3
4
5
6
7
8
9
10
11
12
SNo Date       Hour     X
1   2006-12-17 00:00:00 1.8824667
2   2006-12-17 01:00:00 3.3494000
3   2006-12-17 02:00:00 1.5872667
4   2006-12-17 03:00:00 1.6622000
5   2006-12-17 04:00:00 2.2157667
6   2006-12-17 05:00:00 1.9967333
7   2006-12-17 06:00:00 1.3033000
8   2006-12-17 07:00:00 1.6200333
9   2006-12-17 08:00:00 1.8905667
10  2006-12-17 09:00:00 2.5490667
11  2006-12-17 10:00:00 3.6289000

我将如何据此创建时间序列? 频率和开始/结束参数是多少?

最后日期和时间是

2010-11-26 21:00:00


1
2
3
library(lubridate)
NoOfHours <- as.numeric(ymd_hms("2010-11-26 21:00:00") - ymd_hms("2006-12-01 00:00:00"))*24
ymd_hms("2006-12-01 00:00:00") + hours(0:NoOfHours)

步骤1:您需要以POSIXct格式连接Date和Hour列:

1
df$Date <- as.POSIXct(paste(df$Date, df$Time))

第2步:由于此数据是每小时的时间序列,因此应将其转换为xts对象,因为xts比ts更好地处理每小时数据。 order.by是具有时间观测值的列的值。

1
df <- as.xts(df, order.by=df$Date)

您的每小时时间序列数据df现已准备就绪


这是在基本R中使用ts()函数的方法(假设数据X包含在数据框dat中)。 您需要指定start的第一年和小时(不需要end),而frequency将是一年中的小时数。

1
2
firstHour <- 24*(as.Date("2006-12-17 00:00:00")-as.Date("2006-1-1 00:00:00"))
tt <- ts(dat$X,start=c(2006,firstHour),frequency=24*365)

我将使用zoo包和特殊方便的函数read.zoo来创建时间序列。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
library(zoo)
## if you have a file input replace text=by filename
x.zoo <- read.zoo(text="SNo Date   Hour     X
1   2006-12-17 00:00:00 1.8824667
2   2006-12-17 01:00:00 3.3494000
3   2006-12-17 02:00:00 1.5872667
4   2006-12-17 03:00:00 1.6622000
5   2006-12-17 04:00:00 2.2157667
6   2006-12-17 05:00:00 1.9967333
7   2006-12-17 06:00:00 1.3033000
8   2006-12-17 07:00:00 1.6200333
9   2006-12-17 08:00:00 1.8905667
10  2006-12-17 09:00:00 2.5490667
11  2006-12-17 10:00:00 3.6289000",index=c(2,3),tz="",
header=TRUE)

然后很容易将其强制为ts对象:

1
2
3
4
5
as.ts(x.zoo)
Time Series:
Start=1166310000
End=1166346000
Frequency=0.000277777777777778

这个怎么样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
df <- data.frame(Date=rep("2006-12-01", 10),
                 Time=paste0(1:10,":00:00"),
                 x=rnorm(10))

library(zoo)
df$Date <- as.POSIXct(paste(df$Date, df$Time),"GMT")
as.zoo(df[, c("Date","x")])

# Date                x        
# 1  2006-12-01 01:00:00 -0.1386150
# 2  2006-12-01 02:00:00  1.8828398
# 3  2006-12-01 03:00:00  0.8736687
# 4  2006-12-01 04:00:00 -0.9145971
# 5  2006-12-01 05:00:00 -1.2449176
# 6  2006-12-01 06:00:00 -0.3599822
# 7  2006-12-01 07:00:00  1.3287747
# 8  2006-12-01 08:00:00  0.2926791
# 9  2006-12-01 09:00:00 -0.7015052
# 10 2006-12-01 10:00:00  0.8822346


服务支持

我们珍惜您每一次在线询盘,有问必答,用专业的态度,贴心的服务。

让您真正感受到我们的与众不同 !

合作流程

网站制作流程从提出需求到网站制作报价,再到网页制作,每一步都是规范和专业的。

常见问题

提供什么是网站定制?你们的报价如何?等网站建设常见问题。

售后保障

网站制作不难,难的是一如既往的热情服务及技术支持。我们知道:做网站就是做服务,就是做售后。

平台注册入口