私は月ごとの値を含むRのデータセットを持っています。しかし、いくつかの月が欠落しています。たとえば:時事通信の月が計算されない
"2001-09-01"、 "2001-10-01"、 "2001-12-01" には、 "2002-02-01"
2001年11月には、不足していると2002年1月には欠けています。これらの月を時系列に含めるにはどうすればいいですか?
ありがとうございます!あなたがdata.frame
にデータを持っていると仮定すると
私は月ごとの値を含むRのデータセットを持っています。しかし、いくつかの月が欠落しています。たとえば:時事通信の月が計算されない
"2001-09-01"、 "2001-10-01"、 "2001-12-01" には、 "2002-02-01"
2001年11月には、不足していると2002年1月には欠けています。これらの月を時系列に含めるにはどうすればいいですか?
ありがとうございます!あなたがdata.frame
にデータを持っていると仮定すると
は、dat1
と呼ばれる:
dat1 <- data.frame(
date = as.Date(c("2001-09-01", "2001-10-01", "2001-12-01", "2002-02-01")),
val = 1:4
)
あなたは、あなたが必要とするすべての日付を持つ単一の列を含む第2 data.frame
を作成することができます。このシーケンスを作成するにはseq.Date
を使用します。
dat2 <- data.frame(
date = seq(as.Date("2001-09-01"), by="1 month", length.out=7)
)
そして、それは簡単なmerge
操作です:
merge(dat1, dat2, all=TRUE)
date val
1 2001-09-01 1
2 2001-10-01 2
3 2001-11-01 NA
4 2001-12-01 3
5 2002-01-01 NA
6 2002-02-01 4
7 2002-03-01 NA
欠損値はNA
ですが、あなたは、あなたが望むならば、これらを0に設定するサブセットを使用することができます。
これは毎月のシリーズなので、"yearmon"
のクラス時間のシリーズとして表現するのが理にかなっています。最初の数行は、テストデータを設定し、最後の2行は、実際の充填操作を行います。
# set up input data as a zoo series
library(zoo)
d <- c("2001-09-01", "2001-10-01", "2001-12-01", "2002-02-01")
z <- zoo(1:4, as.yearmon(d))
# merge with zero width series
g <- seq(start(z), end(z), 1/12)
zz <- merge(z, zoo(, g), fill = 0)
が"ts"
シリーズを希望される場合は、as.ts(zz)
を使用するか、"Date"
クラスの時間を持つ動物園のシリーズが望まれるならば、試してくださいを: time(zz) <- as.Date(time(zz))
。
これもでRコマンドvignette("zoo-faq")
経由またはネット上で利用できる動物園に関するFAQの質問13のいくつかの例を挙げて議論されることに注意してください:あなたが提供する場合は、より多くの有益な答えを受け取ることになります
http://cran.r-project.org/web/packages/zoo/vignettes/zoo-faq.pdf
データオブジェクトの構造。 'dput(head(mydata、10))'の出力を提供してください。 –