我正在尝试创建一个简单的时间序列,但我似乎无法弄清楚发生了什么。 我正在输入一个简单的文本制表符分隔文件,如下所示:
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()
我似乎无法绘制一个简单的时间序列。
答案 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)
(图片后继续)
这些也是如此:
# 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")