如何在 R 数据帧列中使用前置值填充 NA 值?
要使用前面和后面的值填充 NA 值,我们可以使用 zoo 包的 na.locf 函数,其中 fromLast = TRUE。这是下面显示的列的情况:-
x 0 NA NA 1 1 NA 0 1
使用前面和后面的值填充 NA 值后的输出将是 -
x 0 0 0 1 1 1 0 1
考虑以下数据帧 -
示例
x1<-sample(c(NA,rpois(2,1)),20,replace=TRUE) x2<-sample(c(NA,rpois(2,5)),20,replace=TRUE) df1<-data.frame(x1,x2) df1
输出
x1 x2 1 0 1 2 NA 6 3 NA NA 4 1 6 5 1 NA 6 NA NA 7 0 6 8 1 1 9 NA 6 10 1 NA 11 1 6 12 NA NA 13 NA 6 14 1 NA 15 1 1 16 NA 6 17 NA 6 18 NA NA 19 1 NA 20 1 6
加载 zoo 包,并用 df1 中的前置值替换 NA 值 -
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
示例
library(zoo) na.locf(na.locf(df1),fromLast=TRUE)
输出
x1 x2 1 0 1 2 0 6 3 0 6 4 1 6 5 1 6 6 1 6 7 0 6 8 1 1 9 1 6 10 1 6 11 1 6 12 1 6 13 1 6 14 1 6 15 1 1 16 1 6 17 1 6 18 1 6 19 1 6 20 1 6
示例
y1<-sample(c(NA,rnorm(2)),20,replace=TRUE) y2<-sample(c(NA,rnorm(2)),20,replace=TRUE) df2<-data.frame(y1,y2) df2
输出
y1 y2 1 -0.4569616 NA 2 NA -1.014162 3 NA -1.014162 4 -0.4569616 -1.014162 5 -0.4569616 NA 6 0.2828478 1.282601 7 -0.4569616 NA 8 0.2828478 NA 9 0.2828478 -1.014162 10 NA 1.282601 11 0.2828478 -1.014162 12 -0.4569616 1.282601 13 0.2828478 -1.014162 14 NA -1.014162 15 0.2828478 -1.014162 16 NA NA 17 -0.4569616 NA 18 -0.4569616 -1.014162 19 0.2828478 -1.014162 20 NA -1.014162
用 df2 中的前置值替换 NA 值 -
示例
na.locf(na.locf(df2),fromLast=TRUE)
输出
y1 y2 2 -0.4569616 -1.014162 3 -0.4569616 -1.014162 4 -0.4569616 -1.014162 5 -0.4569616 -1.014162 6 0.2828478 1.282601 7 -0.4569616 1.282601 8 0.2828478 1.282601 9 0.2828478 -1.014162 10 0.2828478 1.282601 11 0.2828478 -1.014162 12 -0.4569616 1.282601 13 0.2828478 -1.014162 14 0.2828478 -1.014162 15 0.2828478 -1.014162 16 0.2828478 -1.014162 17 -0.4569616 -1.014162 18 -0.4569616 -1.014162 19 0.2828478 -1.014162 20 0.2828478 -1.014162
广告