5

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に欠落データをスキップするように指示する方法はありますか?

ありがとう

4

2 に答える 2

7

私は、平日と週末を含む毎日がデータに表されていることを収集しますが、データが存在しない日は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 つの可能性は、時間に 1、2、... を使用して名前を付けることです。この場合、その時間の名前を確認することで、ポイントが属する日付をいつでも確認できます。

z1 <- na.omit(z)
time(z1) <- setNames(seq_along(z1), time(z1))
于 2012-03-14T04:16:37.197 に答える
-2

最も簡単な方法は、たとえば、ZOO オブジェクトを data.frame オブジェクトに変換することです (z1は Zoo オブジェクトです)。

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

次に、時系列オブジェクトに変換します。

ts(dz1, frequency=5)
于 2015-05-26T06:22:44.090 に答える