Fill in data frame with values from rows above

前端 未结 4 1386
小鲜肉
小鲜肉 2020-12-10 02:23

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
\         


        
4条回答
  •  被撕碎了的回忆
    2020-12-10 02:49

    +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)
    }
    

提交回复
热议问题