热线电话:13121318867

登录
2018-10-24 阅读量: 1103
时间序列数据处理的学习分享(基于R)

#转成时间序列类型

x = rnorm(2)

charvec = c(“2010-01-01”,”2010-02-01”)

zoo(x,as.Date(charvec))     #包zoo

xts(x, as.Date(charvec))     #包xts

timeSeries(x,as.Date(charvec))  #包timeSeries

#规则的时间序列,数据在规定的时间间隔内出现

tm = ts(x,start = c(2010,1), frequency=12 )  #12为按月份,4为按季度,1为按年度

zm = zooreg(x,start = c(2010,1), frequency=12 )  #包zoo

xm = as.xts(tm)     #包xts

sm = as.timeSeries(tm) #包timeSeries

#判断是否为规则时间序列

is.regular(x)

#排序

zoo()和xts()会强制变换为正序(按照时间名称)

timeSeries不会强制排序;其结果可以根据sort函数排序,也可以采用rev()函数进行逆序;参数recordIDs,可以给每个元素(行)标记一个ID,从而可以找回原来的顺序

#预设的时间有重复的时间点时

zoo会报错

xts按照升序排列

timeSeries把重复部分放置在尾部;

#行合并和列合并

#都是按照列名进行合并,列名不同的部分用NA代替

cbind()

rbind()

merge() 列合并

#取子集

xts()默认将向量做成了矩阵;其他与常规向量或者矩阵没有差别

#缺失值处理

na.omit(x)

x[is.na(x)] = 0

x[is.na(x)] = mean(x,na.rm=TRUE)

x[is.na(x)] = median(x,na.rm=TRUE)

na.approx(x)  #对缺失值进行线性插值

na.spline(x)   #对缺失值进行样条插值

na.locf(x)     #末次观测值结转法

na.trim(x, sides=”left” )  #去掉最后一个缺失值

#对timeSreies数据

na.omit(x, “ir” )  #去掉首末位置的缺失值

na.omit(x, “iz” )  #用替换首末位置的缺失值

na.omit(x, “ie” )  #对首末位置的缺失值进行插值

na.omit(x, method=“ie”, interp= c(“before”,”linear”,”after”) ) #可以选择插值方法,before末次观测值法,after下次观测结转法

as.contiguous(x)  #返回x中最长的连续无缺失值的序列片段,如果有两个等长的序列片段,则返回第一个。

#时间序列数据的显示

#zoo和xts都只能按照原来的格式显示,timeSeries可以设置显示格式

print(x, format= “%m/%d/%y %H:%M”)  #%m表示月,%d表示天,%y表示年,%H表示时,%M表示分钟,%A表示星期,%j表示天的序号

#timeSeries也可以按照ts的格式显示

print(x, style=”ts”)

print(x, style=”ts”, by=”quarter”)

0.0000
4
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子