私が取り組んでいるデータ セットの最後に欠損値がある場合、「最後の観察の繰り越し」を実装したいと考えています。
これを行うための簡単なコードを次に示します(その後の質問)。
LOCF <- function(x)
{
# Last Observation Carried Forward (for a left to right series)
LOCF <- max(which(!is.na(x))) # the location of the Last Observation to Carry Forward
x[LOCF:length(x)] <- x[LOCF]
return(x)
}
# example:
LOCF(c(1,2,3,4,NA,NA))
LOCF(c(1,NA,3,4,NA,NA))
現在、これは単純なベクトルに最適です。しかし、データフレームでどこで試して使用するか:
a <- data.frame(rep("a",4), 1:4,1:4, c(1,NA,NA,NA))
a
t(apply(a, 1, LOCF)) # will make a mess
データ フレームを文字マトリックスに変換します。
マトリックスに変換せずに、data.frame で LOCF を実行する方法を考えられますか? (ループなどを使用して混乱を修正することもできますが、よりエレガントなソリューションが欲しいです)