我有每小时数据。
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
答案 0 :(得分:2)
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 :(得分:0)
这个怎么样:
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
答案 2 :(得分:0)
我会使用zoo
包和specialy handy function read.zoo
来创建时间序列。
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
对象:
as.ts(x.zoo)
Time Series:
Start = 1166310000
End = 1166346000
Frequency = 0.000277777777777778
答案 3 :(得分:0)
以下是基础ts()
中R
函数的使用方法(假设您的数据X
包含在数据框dat
中)。您需要指定start
的第一年和小时(您不需要end
),frequency
将是一年中的小时数。
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)
答案 4 :(得分:0)
步骤1:您需要以POSIXct格式连接日期和小时列:
df$Date <- as.POSIXct(paste(df$Date, df$Time))
第2步:由于此数据是每小时的时间序列,因此应将其转换为xts对象,因为xts比ts更好地处理每小时数据。 order.by是具有时间观测值的列的值。
df <- as.xts(df, order.by = df$Date)
您的每小时时间序列数据df现在已经准备好