【问题标题】:Create a simple time series创建一个简单的时间序列
【发布时间】:2014-01-13 14:24:09
【问题描述】:

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

        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() 

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

【问题讨论】:

  • start=c(02/07/2014) 将不起作用。

标签: r time-series


【解决方案1】:

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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 2015-01-18
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    相关资源
    最近更新 更多