Last Observation Carried Forward
A function for replacing each NA with the most recent non-NA prior to it.
na_locf(x, first_na_value = 0, recursive = TRUE, ...)
x |
some vector |
first_na_value |
If the first observation is NA, fill it with "first_na_value" |
recursive |
logical (TRUE). Should na_locf be re-run until all NA values are filled? |
... |
ignored. |
The original vector, but with all the missing values filled by the value before them.
This could probably be solved MUCH faster using Rcpp.
na_locf(c(NA, NA)) na_locf(c(1, NA)) na_locf(c(1, NA, NA, NA)) na_locf(c(1, NA, NA, NA, 2, 2, NA, 3, NA, 4)) na_locf(c(1, NA, NA, NA, 2, 2, NA, 3, NA, 4), recursive = FALSE) ## Not run: library(microbenchmark) library(zoo) microbenchmark( na_locf = na_locf(c(1, NA, NA, NA, 2, 2, NA, 3, NA, 4)), na.locf = na.locf(c(1, NA, NA, NA, 2, 2, NA, 3, NA, 4)) ) # my implementation is 6 times faster :) microbenchmark( na_locf = na_locf(rep(c(1, NA, NA, NA, 2, 2, NA, 3, NA, 4), 1000)), na.locf = na.locf(rep(c(1, NA, NA, NA, 2, 2, NA, 3, NA, 4), 1000)) ) # my implementation is 3 times faster ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.