创建一个简单的时间序列

时间:2014-01-13 14:24:09

标签: r time-series

我正在尝试创建一个简单的时间序列,但我似乎无法弄清楚发生了什么。 我正在输入一个简单的文本制表符分隔文件,如下所示:

        Date     Time             NOx.Levels
1       02/07/14 00:00:00         37

2       02/07/14 01:00:00         31

3       02/07/14 02:00:00         44

4       02/07/14 03:00:00         25

我使用的代码如下:

 pollution_data <-read.table(file.choose(),header=T,sep="\t") 
 pollution_data

 dm <- ts(pollution_data, frequency=24, start=c(02/07/2014))
 dm$Date <- as.Date(dm$Date, "%d.%m.%Y")

 require(ggplot2)
 ggplot( data = dm, aes( Date, Visits )) + geom_line() 

我似乎无法绘制一个简单的时间序列。

1 个答案:

答案 0 :(得分:3)

ts对日期/时间值不是很好。试试下面的动物园解决方案之后还有其他一些解决方案。

以下index = 1:2表示前两列是日期/时间,format=表示格式的百分比代码,tz=表示本地时区(也会导致它)使用POSIXct日期时间)。 autoplot生成ggplot2图。

Lines <- "       Date     Time             NOx.Levels
1       02/07/14 00:00:00         37
2       02/07/14 01:00:00         31
3       02/07/14 02:00:00         44
4       02/07/14 03:00:00         25
"

# 1    
library(zoo)
library(ggplot2)
fmt <- "%m/%d/%y %H:%M:%S"
z <- read.zoo(text = Lines, header = TRUE, index = 1:2, format = fmt, tz = "")
autoplot(z)

(图片后继续)

enter image description here

这些也是如此:

# 2
plot(z)

# 3
library(lattice)
xyplot(z)

另一种方法是:

# 4
library(ggplot2)
DF <- read.table(text = Lines, header = TRUE)
DF$datetime <- as.POSIXct(paste(DF$Date, DF$Time), format = fmt) # fmt defined previously
qplot(datetime, NOx.Levels, data = DF, geom = "line")

如果我们想在这里使用ts最好的时间。我们假设时间从第1小时开始,每个连续数据点都是下一个小时。

# 5
plot(ts(DF$NOx.Levels), xlab = "hour")