2011-12-19 13 views
0

私は、数年間の複数の州の調査からの観測値を持つ大きなデータフレームを持っています。私はそれが時間位置が(TIME1、OBS1)と整列されているということにobs2補間したい、各状態/ survey.year組み合わせについてデータフレームのサブセットに変数を補間する

state | survey.year | time1 | obs1 | time2 | obs2 
CA | 2000  | 1  | 23 | 1.2 | 43 
CA | 2001  | 2  | 43 | 1.4 | 52 
CA | 2002  | 5  | 53 | 3.2 | 61 
... 
CA | 1998  | 3  | 12 | 2.3 | 20 
CA | 1999  | 4  | 14 | 2.8 | 25 
CA | 2003  | 5  | 19 | 4.3 | 29 
... 
ND | 2000  | 2  | 223 | 3.2 | 239 
ND | 2001  | 4  | 233 | 4.2 | 321 
ND | 2003  | 7  | 256 | 7.9 | 387 

:ここでデータ構造です。

つまりデータフレームをstate/survey.yearチャンクに分解し、線形補間を行い、個々の状態/ survey.yearデータフレームをまとめてマスターデータフレームにつなぎたいと思います。

私はこれのためにplyrとHmiscパッケージを使用する方法を理解しようとしています。しかし、絡み合って自分自身を維持する。

ここで私は、補間を行うに書いたコードです:

require(Hmisc) 
df <- new.obs2 <- NULL 
for (i in 1:(0.5*(ncol(indirect)-1))){ 
df[,"new.obs2"] <- approxExtrap(df[,"time1"], 
            df[,"obs1"], 
            xout = df[,"obs2"], 
            method="linear", 
            rule=2) 
} 

をしかし、私はこの問題にplyrを発揮するかどうかはわからないが。あなたの寛大な助言と提案は、非常に高く評価されます。本質的には - 私は各状態/ survey.yearの組み合わせ内で "obs2"を補間しようとしているので、 "obs1"のものと時間参照が整列しています。 plyr機能を起動せずにこれを行うための巧みな方法がある場合はもちろん、

は、その後、私はそれに開いているだろう...

ありがとうございます!

答えて

2

これは

ddply(df,.(state,survey.year),transform, 
           new.obs2 = approxExtrap(time1,obs1,xout = obs2, 
                 method = "linear", 
                 rule = 2)) 

、のように単純でなければなりません。しかし、私はあなたのforループのポイントが何であるかfoggiestアイデアを持っていないので、私は、あなたに何を約束することはできません。 (ループのたびにdf[,"new.obs2"]を上書きしていますか?データフレーム全体を初期化するdfNULLindirectとは何ですか?)

関連する問題