我有一个带有NA的数据框。我想用先前的已知值填充NA,但如果没有先前的值适用,则应保留NA。
示例:
df <- data.frame(col1 = c(1,2,3,4,5), col2 = c("a", NA, NA , "b", NA), col3 = c(NA, "B", NA, "C", NA), col4 = c(NA, NA, "1", "2", NA))
我尝试了动物园图书馆的na.locf函数
do(na.locf(.))
但是,这将删除具有NA且没有先前非NA值的行。结果应该是:
col1 col2 col3 col4
1 a NA NA
2 a B NA
3 a B 1
4 b C 2
5 b C 2
可能的解决方案是将na.locf函数应用于所有列并将其放入列表中,从而导致列表元素具有不同的行长度。
df_list <- apply(df, 2, na.locf)
第二步,应将所有NA的每个元素的/附加行添加到/之前。但是,我无法执行此步骤。
任何想法都是解决问题的最佳方法是什么?