Say I have a data frame like this:
ID, ID_2, FIRST, VALUE
-----------------------
\'a\', \'aa\', TRUE, 2
\'a\', \'ab\', FALSE, NA
\'a\', \'ac\', FALSE, NA
\
+1 for @nacnudus Handles leading blanks
f4 <- function(x, blank = is.na) {
# Find the values
if (is.function(blank)) {
isnotblank <- !blank(x)
} else {
isnotblank <- x != blank
}
# Fill down
xfill <- cumsum(isnotblank)
xfill[ xfill == 0 ] <- NA
# Replace Blanks
xnew <- x[ which(isnotblank) ][ xfill ]
xnew[is.na(xnew)] <- blank
return(xnew)
}