时间: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现已准备就绪
这是在基本
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) |
我将使用
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) |
然后很容易将其强制为
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 |