2

一部のデータを消去しようとしており、ゼロを前の日付の値に置き換えたいと考えています。次のコードが機能することを望んでいましたが、機能しません

temp = c(1,2,4,5,0,0,6,7)
temp[which(temp==0)]=temp[which(temp==0)-1]

戻り値

1 2 4 5 5 0 6 7

それ以外の

1 2 4 5 5 5 6 7

私が望んでいたこと。ループせずにこれを行う良い方法はありますか?

4

2 に答える 2

6

この操作は「最後の観測の繰り越し」と呼ばれ、通常はデータのギャップを埋めるために使用されます。これは時系列の一般的な操作であるため、zoo パッケージに実装されています。

temp = c(1,2,4,5,0,0,6,7)

temp[temp==0] <- NA

library(zoo)
na.locf(temp)
#[1] 1 2 4 5 5 5 6 7
于 2013-07-11T11:21:45.293 に答える