繁体   English   中英

内部NA时间序列,动物园,R

[英]internal NA time series, zoo, R

我在R中有一个动物园对象,该对象具有每日数据,但缺少周末。 当我尝试在对象上运行某些函数(例如ar() )时,出现错误:

mkt.ar <- ar(zoo_object)
Error in na.fail.default(as.ts(x)) : missing values in object

如果我做:

mkt.ar <- ar(zoo_object, na.action=na.omit)
Error in na.omit.ts(as.ts(x)) : time series contains internal NAs

这是有道理的,因为当动物园试图将事物转换为ts时,周末本来就不存在。 除了使用coredata(zoo_object)将事物转换为向量并在其上运行ar() ,还有没有办法告诉R跳过丢失的数据?

谢谢

我收集到,每天的数据都包含在您的数据中,包括工作日和周末,但是不存在任何数据的日子都是不NA (而不是根本不存在)。 将来,请提供一些测试数据,以提高清晰度。

除了解决方案之外,如果您有足够的数据,则只能通过提取周五或之前的最后一个非缺失值来对每周数据执行ar

library(zoo)

# test data
library(chron) # is.weekend
z <- zoo(100:130, as.Date("2000-01-01") + 0:30)
z[is.weekend(time(z))] <- NA

# extract Fridays
zfri <- na.locf(z)[format(time(z), "%w") == 5]

(如果不存在丢失的周五它可以通过更换被缩短na.locf(z)z )。

另一种可能性是使用1、2,...作为时间,但给它们命名,在这种情况下,您始终可以通过检查时间名称来找出该点属于哪个日期。

z1 <- na.omit(z)
time(z1) <- setNames(seq_along(z1), time(z1))

最简单的方法是将ZOO对象转换为data.frame对象,例如( z1是zoo对象):

dz1<-data.frame(na.omit(z1))

然后将其转换为时间序列对象。

ts(dz1, frequency=5)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM