2016-11-09 5 views
0

私はいくつかの時系列を一緒にマージしました。最初の行にはNAがないようにデータをサブセット化する必要があります。最初の行の下には、行全体であっても、NAsが存在する可能性があります。私は補間によってそれらの世話をする必要があります。ここ は、簡略化されたデータの例である:R - 動物園のオブジェクトの空の行の一部だけを削除する

DF <- data.frame(x = c(NA, NA, 3, 2, 6, NA, 5), y = c(NA, NA, 24, 11, NA, NA, 8), z=c(NA, NA, NA, 33, 22, NA, 19)) 
date <- c("2001-03-30", "2001-03-31", "2001-04-01", "2001-04-02", "2001-04-03", "2001-04-04", "2001-04-05") 
DFz <- zoo(DF, order.by = date) 
DFz 
x y z 
2001-03-30 NA NA NA 
2001-03-31 NA NA NA 
2001-04-01 3 24 NA 
2001-04-02 2 11 33 
2001-04-03 6 NA 22 
2001-04-04 NA NA NA 
2001-04-05 5 8 19 

何を得たいことは全くのNAを有していない最初の行から開始して、新しい動物園の行列であり、(すなわち、上記の例では4行目から)、最終的なNA最初の行の下の行は代わりに保持する必要があります。私はこれを取得したいと思います:

2001-04-02 2 11 33 
2001-04-03 6 NA 22 
2001-04-04 NA NA NA 
2001-04-05 5 8 19 

私はさまざまな方法を試しましたが、実際にそれを行う方法はわかりません。 提案がありますか?

+3

na.trim.ts(DFZ) – Henk

+0

感謝@Henk:彼らは、このコマンドの出力の中で一覧表示されます!実際、na.trim.ts(DFz)は私に警告メッセージを表示しますが、あなたの提案にしたがって、私は完全に動作する簡単なna.trim(DFz)を見つけて試しました! – stem

+0

最後の行にもNAsがある場合、それらは 'na.trim'関数によってトリムされることに注意してください。 –

答えて

2

na.trim.zoo方法を派遣したna.trimをお試しください:

na.trim(DFz, sides = "left") 

与える:デフォルトでは

  x y z 
2001-04-02 2 11 33 
2001-04-03 6 NA 22 
2001-04-04 NA NA NA 
2001-04-05 5 8 19 

が両側からna.trimトリムは、私たちは、末尾のNAが保たれていることを確認するためにsidesを使用しています。

注:na.*の動物園の方法に慣れ親しむことをおすすめします。

apropos("^na[.]") 
+0

ありがとう!私はいくつかのnaを使用しています*。しかし、私は知らなかったna。*を検索し、検索することは考えていませんでした。 – stem

関連する問題