Forループなしでこれをやろうとしていますが、理解できません。
列の最初の NA をデフォルト値の 0.0000001 に置き換えたいと考えています。
Last Observation Carried Forward (LOCF) 代入を行っていますが、デフォルト値を指定したいと考えています。
次の data.frame がある場合:
> Col1 Col2 Col3 Col4
> 1 NA 10 99
> NA NA 11 99
> 1 NA 12 99
> 1 NA 13 NA
私はそれを次のようにしたい:
> Col1 Col2 Col3 Col4
> 1 0.0000001 10 99
> 0.0000001 NA 11 99
> 1 NA 12 99
> 1 NA 13 0.0000001
これは動作するコードですが、非常に遅いです...
#Temporary change for missing first observation
for (u in 1:ncol(data.frame))
{
for (v in 1:nrow(data.frame))
{
#Temporary change the first observations in a row to 0.0000001 until it encounters a value that isn't NA
if(is.na(temp_equity_df_merge2[v,u]))
{
temp_equity_df_merge2[v,u]=0.0000001
}
else break
}
apply またはより高速なバリアントを使用したい。20 列と 100 万行をループしています。
助けてくれてありがとう。