1

您好,我对 R 完全陌生,在开始我的项目之前,我正在尝试对存储在 .csv 文件中的简单时间序列进行简单的时间序列分析,如下所示。

Date/Time,AT
01-Jan-2008 00:00,1
01-Jan-2008 01:00,2
01-Jan-2008 02:00,3
01-Jan-2008 03:00,4
01-Jan-2008 04:00,5
01-Jan-2008 05:00,4
01-Jan-2008 06:00,3
01-Jan-2008 07:00,2
01-Jan-2008 08:00,1
01-Jan-2008 09:00,2
01-Jan-2008 10:00,3
01-Jan-2008 11:00,4
01-Jan-2008 12:00,5

从这个 .csv 文件中,我想创建一个时间序列变量。以下代码会产生错误。我可能需要安装软件包吗?

test=ts(scan("desktop/test.csv"),frequency=13, start=2008+1/1)

任何帮助将不胜感激。

4

2 回答 2

3

您可以使用read.zoofrom zoopackage 在时间序列中直接读取您的 csv。

library(zoo)

fmt <- '%d-%b-%Y %H:%M'

## if data in file replace with this line:
## dat <- read.zoo("myfile.dat",header=TRUE,sep=',',tz='',format=fmt,index=0:1)                     

dat <- read.zoo(text='Date/Time,AT
01-Jan-2008 00:00,1
01-Jan-2008 01:00,2
01-Jan-2008 02:00,3
01-Jan-2008 03:00,4
01-Jan-2008 04:00,5
01-Jan-2008 05:00,4
01-Jan-2008 06:00,3
01-Jan-2008 07:00,2
01-Jan-2008 08:00,1
01-Jan-2008 09:00,2
01-Jan-2008 10:00,3
01-Jan-2008 11:00,4
01-Jan-2008 12:00,5',header=TRUE,sep=',',
                tz='',
                format=fmt,       ## date format
                index=0:1)        ## rownames + first column

dat
2008-01-01 00:00:00 2008-01-01 01:00:00 2008-01-01 02:00:00 2008-01-01 03:00:00 2008-01-01 04:00:00 2008-01-01 05:00:00 
                  1                   2                   3                   4                   5                   4 
2008-01-01 06:00:00 2008-01-01 07:00:00 2008-01-01 08:00:00 2008-01-01 09:00:00 2008-01-01 10:00:00 2008-01-01 11:00:00 
                  3                   2                   1                   2                   3                   4 
2008-01-01 12:00:00 
                  5 

当然,您可以将 zoo 对象转换为 ts one(甚至最好使用 zoo 和 xts 包进行时间序列):

dat.ts <- ts(dat)
于 2013-04-08T18:53:24.003 回答
1

另一种方法是使用包“Lubridate”。

library(lubridate)
timeseries <- read.table("timeseries.csv", sep=",", header=T, dec=".")
timeseries[,1] <- dmy_hm(timeseries[,1])

假设您的数据存储在名为“timeseries”的 csv 中,则数据将被读入 data.frame。第一列更改为 POSIXct 类。POSIXct 在 R 中被广泛用作日期/时间格式。

当然也可以把data.frame转成ts:

timeseries <- as.ts(timeseries)
于 2013-04-09T17:36:01.313 回答