2017-08-10 13 views
0

N/Aの時系列データがあります。データは、滑らかなアニメーションの場合アニメーション散布時系列データの条件付き補間R

Week X Y 
1  1 105 
2  3 110 
3  5 N/A 
4  7 130 
8  15 160 
12  23 180 
16  30 N/A 
20  37 200 

で終了するようにされ、データは計算、加算値/行によって補足されます。 X値の場合、これは単に算術的なものです。これまでのところ問題ありません。

Week X Y 
1  1 105 
     2 
2  3 110 
     4 
3  5 N/A 
     6 
4  7 130 
     8 
     9 
     10 
     11 
     12 
     13 
     14 
8  15 160 
     16 
     17 
     18 
     19 
     20 
     21 
     22 
12  23 180 
     24 
     25 
     26 
     27 
     28 
     29 
16  30 N/A 
     31 
     32 
     33 
     34 
     35 
     36 
20  37 200 

Yの値が補間されるべきであり、追加の要件があり、その補間は、それらの間にN/Aを有する値の間の2つの連続した値ではなく、間に表示されます。

Week X Value 
1  1 105 
     2 interpolated value 
2  3 110 
     4 
3  5 N/A 
     6 
4  7 130 
     8 interpolated value 
     9 interpolated value 
     10 interpolated value 
     11 interpolated value 
     12 interpolated value 
     13 interpolated value 
     14 interpolated value 
8  15 160 
     16 interpolated value 
     17 interpolated value 
     18 interpolated value 
     19 interpolated value 
     20 interpolated value 
     21 interpolated value 
     22 interpolated value 
12  23 180 
     24 
     25 
     26 
     27 
     28 
     29 
16  30 N/A 
     31 
     32 
     33 
     34 
     35 
     36 
20  37 200 

は、私はすでに、およそで実験値をプレースホルダ「オリジナル」N/A変換し、na.approxなどで動物園のパッケージを試みたがための正しい条件文を表現するために、それを得るドントていますこの種の「条件付き近似」または「条件付きギャップ充填」。どんなヒントも大歓迎です。事前

答えて

1

おかげで、infを使用してNASに置き換え補間して、NAに無限の値を戻します。週すべての週に拡張された場合に次のように与え

library(zoo) 

DF2 <- DF 
DF2$Y[is.na(DF2$Y)] <- Inf 

w <- merge(DF2, data.frame(Week = min(DF2$Week):max(DF2$Week)), by = 1, all.y = TRUE) 
w$Value <- na.approx(w$Y) 
w$Value[!is.finite(Value)] <- NA 

、Yは、元のNAは、INFファイルとNAとして挿入NASとして示されているようなものです。値はY.

> w 
    Week X Y Value 
1  1 1 105 105.0 
2  2 3 110 110.0 
3  3 5 Inf NA 
4  4 7 130 130.0 
5  5 NA NA 137.5 
6  6 NA NA 145.0 
7  7 NA NA 152.5 
8  8 15 160 160.0 
9  9 NA NA 165.0 
10 10 NA NA 170.0 
11 11 NA NA 175.0 
12 12 23 180 180.0 
13 13 NA NA NA 
14 14 NA NA NA 
15 15 NA NA NA 
16 16 30 Inf NA 
17 17 NA NA NA 
18 18 NA NA NA 
19 19 NA NA NA 
20 20 37 200 200.0 
を補間し

注:再現可能な形で入力DF:魅力のように働いた

Lines <- " 
Week X Y 
1  1 105 
2  3 110 
3  5 N/A 
4  7 130 
8  15 160 
12  23 180 
16  30 N/A 
20  37 200" 
DF <- read.table(text = Lines, header = TRUE, na.strings = "N/A") 
+0

!もう一度ありがとう! – tsWIDE

関連する問題