簡體   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