私は2つのデータ系列(較正とサンプル)を持ち、較正データを月ごとからサンプルの周波数に補間しようとしていますが、微妙に2番目にランダムに変化します。時系列補間
私は(Interpolating timeseries)これを試してみましたが、ここに私のコードです:
require(zoo)
##calib <- read.csv("C://mw2cal.csv")
##sample <- read.csv("C://mw2sam.csv")
#using "deput" to represent the data sets
sample <- structure(list(DateMW.2 = structure(1:15, .Label = c("6/2/2016 18:15:00",
"6/2/2016 18:30:00", "6/2/2016 18:45:00", "6/2/2016 19:00:00",
"6/2/2016 19:15:00", "6/2/2016 19:30:00", "6/2/2016 19:45:00",
"6/2/2016 20:00:00", "6/2/2016 20:15:00", "6/2/2016 20:30:00",
"6/2/2016 20:45:00", "6/2/2016 21:00:00", "6/2/2016 21:15:00",
"6/2/2016 21:30:00", "6/2/2016 21:45:00"), class = "factor"),
MW.2 = c(61.40373, 61.41549, 61.41549, 61.42451, 61.42752,
61.42478, 61.43107, 61.42369, 61.40564, 61.41056, 61.40592,
61.39416, 61.38432, 61.3753, 61.3753)), .Names = c("DateMW.2",
"MW.2"), row.names = c(NA, 15L), class = "data.frame")
calib <- structure(list(Date = structure(c(4L, 5L, 6L, 7L, 8L, 1L, 2L,
3L), .Label = c("10/31/2016 12:00:00", "11/30/2016 12:00:00",
"12/31/2016 12:00:00", "5/31/2016 12:00:00", "6/30/2016 12:00:00",
"7/31/2016 12:00:00", "8/31/2016 12:00:00", "9/30/2016 12:00:00"
), class = "factor"), MW2 = c(60.844402, 58.859566, 57.495434,
56.328285, 56.842606, 57.76762, 59.583103, 59.958263)), .Names = c("Date",
"MW2"), class = "data.frame", row.names = c(NA, -8L))
zc <- zoo(calib$MW2, calib$Date)
zs <- zoo(sample$MW.2, sample$DateMW.2)
z <- merge(zc, zs)
zc <- zoo(calib$MW2, calib$Date)
zs <- zoo(sample$MW.2, sample$DateMW.2)
# "merge" gets data frames only
zc <- data.frame(zc)
zs <- data.frame(zs)
z <- merge(zc, zs)
z$zc <- na.approx(z$zc, rule=2)
df <- z[index(zs),]
サンプル・データは次のようになります。
DateMW.2 MW.2
6/2/2016 18:15:00 61.40373
6/2/2016 18:30:00 61.41549
6/2/2016 18:45:00 61.41549
6/2/2016 19:00:00 61.42451
6/2/2016 19:15:00 61.42752
6/2/2016 19:30:00 61.42478
6/2/2016 19:45:00 61.43107
6/2/2016 20:00:00 61.42369
6/2/2016 20:15:00 61.40564
6/2/2016 20:30:00 61.41056
6/2/2016 20:45:00 61.40592
6/2/2016 21:00:00 61.39416
6/2/2016 21:15:00 61.38432
...
と校正:
Date MW2
5/31/2016 12:00:00 60.84440
6/30/2016 12:00:00 58.85957
7/31/2016 12:00:00 57.49543
8/31/2016 12:00:00 56.32829
9/30/2016 12:00:00 56.84261
10/31/2016 12:00:00 57.76762
11/30/2016 12:00:00 59.58310
12/31/2016 12:00:00 59.95826
エラー間がありました解決されたデータセットをマージする。あなたがそれに興味があるなら、あなたはスクロールダウンすることができます。
ここで問題となるのは、補間の代わりに較正データセットを繰り返すことだけです。補間されたdfの部分を見て、それを上記の元のデータと比較することができます。
> df
zc zs date
1 60.84440 61.40373 2016-06-02 18:15:00
2 58.85957 61.40373 2016-06-02 18:30:00
3 57.49543 61.40373 2016-06-02 18:45:00
4 56.32829 61.40373 2016-06-02 19:00:00
5 56.84261 61.40373 2016-06-02 19:15:00
6 57.76762 61.40373 2016-06-02 19:30:00
7 59.58310 61.40373 2016-06-02 19:45:00
8 59.95826 61.40373 2016-06-02 20:00:00
9 60.84440 61.41549 2016-06-02 20:15:00
10 58.85957 61.41549 2016-06-02 20:30:00
11 57.49543 61.41549 2016-06-02 20:45:00
12 56.32829 61.41549 2016-06-02 21:00:00
13 56.84261 61.41549 2016-06-02 21:15:00
14 57.76762 61.41549 2016-06-02 21:30:00
15 59.58310 61.41549 2016-06-02 21:45:00
16 59.95826 61.41549 2016-06-02 22:00:00
17 60.84440 61.41549 2016-06-02 22:15:00
18 58.85957 61.41549 2016-06-02 22:30:00
19 57.49543 61.41549 2016-06-02 22:45:00
20 56.32829 61.41549 2016-06-02 23:00:00
21 56.84261 61.41549 2016-06-02 23:15:00
22 57.76762 61.41549 2016-06-02 23:30:00
23 59.58310 61.41549 2016-06-02 23:45:00
24 59.95826 61.41549 2016-06-03 00:00:00
25 60.84440 61.42451 2016-06-03 00:15:00
...
WindowsとMacではRバージョン3.3.2を使用しています。
これは私が得たエラーと出力されます。私はマージ中に問題が起きていることを知りました。 zとzcをzにマージすると、zにはNAだけが表示されます。
> head(z)
zc zs
1 NA NA
2 NA NA
3 NA NA
4 NA NA
5 NA NA
6 NA NA
> z$zc <- na.approx(z$zc, rule=2)
Error in NextMethod("[<-") : replacement has length zero
> df <- z[index(zs),]
> df
zc zs
1 NA NA
2 NA NA
3 NA NA
4 NA NA
5 NA NA
...
merge
を使用してのコメント:zoo
の
出力データフレームではなかったので、それをマージすることはできません。 data.frame
を使用してzcとzsをdfに変換すると、この問題は解決されます。
'head(z)'を実行して、あなたが信じているように、その中にzcとzsという列があることを確認します。また、なぜそれらの行を途中で繰り返すのですか?そして、おそらく別の変数を大きなZと呼んではいけません。それは私たちすべてを混乱させます。 – dash2
@ dash2私はそれをもっとはっきりと述べた方がいいでしょう。しかし、問題はマージである。私は質問を編集します。 – Masoud
ありがとう!このエラーは、「NA」のすべての値から派生しているようです。 – lukeA