我在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))
关于r - 内部NA时间序列,动物园,R,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9695636/