TOP

R语言时间序列数据应用xts(一)
2017-10-09 14:26:44 】 浏览:8783
Tags:语言 时间序列 数据 应用 xts

zoo是时间序列的基础库,是面向通用的设计。 xts 是对时间序列库(zoo) 的一种扩展实现。xts 类型继承了zoo 类型,丰富了时间序列数据处理的函数。

一、xts对象的结构和定义

1xts对象是一个具有时间索引的观测值矩阵,结构如下

  xts = matrix + times

2、创建xts对象,函数如下:

xts (x= ,  order.by= ,  …  )

参数   x : 数据,必须是一个向量或者矩阵;

order.by: 索引(index),是一个与x行数相同的升序排列的时间对象。

创建示例:

data <- rnorm(5)

dates <- seq(as.Date("2016-01-01"), length = 5, by = "days")

smith <- xts(x = data, order.by = dates)

3属性(Attr

xts允许数据绑定任意键值属性,可用来保存对象的元数据。创建xts对象时添加属性,只需要将name=value参数传送给xts()函数。

#使用 POSIXct日期类对象创建bday
bday <- as.POSIXct("1899-05-08")

# 创建xts对象,并新增born属性
hayek <- xts(x = data, order.by = dates, born = bday)

4、分解xts对象

xts 和 zoo的核心是一个简单的R矩阵和一些附加属性,最重要的属性是索引( index)。索引包含了将数据作为时间序列的所有信息。

coredata()   获取xts对象中的矩阵部分。

index()      获取xts对象的index部分。

5、转换成xts对象

  as.xts()

6xts与其他时间序列的主要区别

xts与R大部分其他时间序列对象的主要区别是: xts可以使用表示时间的任何类,不管是POSIXct, Date 还是其他类,xts将它们转换成一种内部格式,使用户尽可能自然地选取子集。

a <- xts(x = 1:2, as.Date("2012-01-01") + 0:1)

a[index(a)]

7、索引的属性

查看索引的类别 indexClass() 

查看索引的时区 indexTZ() 

显示或修改索引时间格式   indexFormat() 

# 修改时间表示格式
indexFormat(temps) <- "%m/%d/%Y"

tzone(), 用于提取或设置时区。

tzone(x) <- "Time_Zone"

 

Xts对象的索引的原始向量是自UNIX纪元(1970-01-01)以来的累计秒数的向量

.index()可获取索引的原始向量。

以下函数用于提取类似于POSIXlt 类型的时间组件:

.indexday()

.indexmon()

.indexyear()
#创建一个周末日期索引
index <- which(.indexwday(temps) == 0 | .indexwday(temps) == 6)

 

二、输入和输出xts数据

1、实际应用中从硬盘或者网络中读取数据。

例如,硬盘中的tmp_file文件的内容如下:

a,b

1/02/2015, 1, 3

2/03/2015, 2, 4

输入示例1:

# 读取tmp_file文件
dat<-read.csv(tmp_file)

#将dat转换成xts格式
xts(dat, order.by = as.Date(rownames(dat), "%m/%d/%Y"))

输入示例2:

#使用read.zoo读取tmp_file文件
dat_zoo <- read.zoo(tmp_file, index.column = 0, sep = ",", format = "%m/%d/%Y")

#将dat_zoo转换成xts
dat_xts <- xts(dat_zoo)

输入示例3:

# FUN = as.yearmon将时间字符串转换成更合适的时间类。

sun <- read.zoo(tmp_file, sep = ",", FUN = as.yearmon)

# 转换成xts对象
sun_xts<-xts(sun)

2、 输出xts 对象

主要有两种方式:

1、使用saveRDS() 和readRDS() 将单个R对象序列化。

2、使用 zoo中的函数 write.zoo()

#获取临时文件名
tmp <- tempfile()

#使用zoo将xts对象写入tmp文件
write.zoo(data_xts, sep = ",", file = tmp)

 

三、查询时间范围

1、查询日期范围

Xts可快速有效地确定日期和时点范围的子集,并提取相应的观测值。

使用特殊字符和日期搭配就可提取xts对象的日期范围。

A["20090825"]       ## 20090825

A["201203/201212"]       ## 201203至201212

A["/201601"]       ## 自 201601开始

2、提取每日时间间隔

# 选取所有日期9:30-16:00之间的观测值

NYSE["T09:30/T16:00"]

3、观测值的更新或替换

# 将dates向量中对应的观测值设置为NA

x[dates] <- NA

# 自2016-06-09至今的观测值修改为0

x["2016-06-09/"] <- 0

4、定位时间周期的开始和结束
last(temps, "1 week")

last(lastweek, 2)

first(lastweek, "-2 days")

 可以将first()和last()组合起来使用

#第1周的后3天

last(first(Temps, '1 week'), '3 days')

5、查看时间周期性和次数

periodicity()  查看时间序列的周期

 ndays() , nmonths(), nquarters()  查看周期的次数

 

四、xts对象的合并运算

 xts objects在做数学计算时,会遵循时间并且只返回有时间交集的数据。 
R语言时间序列数据应用xts(一) https://www.cppentry.com/bencandy.php?fid=91&id=124677

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇RStudio技巧02_Extract Function 下一篇R语言利器之ddply和aggregate