Попытка сделать это без цикла, но не может понять это.Найти и заменить первый NA в каждом столбце без петель
Я хочу заменить первый NA в столбце со значением по умолчанию 0.0000001.
Я делаю последнее наблюдение за переносом вперед (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
Это код, который я haev, что работает, но очень медленно ...
#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
}
Я хочу использовать заявку или какой-либо вариант, который будет быстрее. Я перебираю 20 столбцов и 1 миллион строк.
Спасибо за помощь.
, так как вы уже LOCF, вы можете быть заинтересованы в 'библиотеке («зоопарк»); ? na.locf' – GSee
Я ценю это. Это то, что я использую, но если первое наблюдение пустое, оно игнорирует его (например, оно ничего не вернет для столбца 2). Кроме того, он работает только на каждом столбце отдельно, поэтому, когда я буду использовать cbind впоследствии, они будут иметь разную длину. – Brad