Filling data frame with previous row value

前端 未结 7 600
孤街浪徒
孤街浪徒 2020-12-29 13:02

I have a data frame that has 2 columns.

column1 has random numbers in column2 is a place holding column for what i want column3 to look like

  random         


        
7条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-29 13:52

    I suggest using the run length encoding functions, it's a natural way for dealing with steaks in a data set. Using @Kevin's example vector:

    temp = c(1,0,0,0,.5,0,0,0,0,0,1,0,0,0,0,0,1,0,0.5,0,0,0,1)
    y <- rle(temp)
    #str(y)
    #List of 2
    # $ lengths: int [1:11] 1 3 1 5 1 5 1 1 1 3 ...
    # $ values : num [1:11] 1 0 0.5 0 1 0 1 0 0.5 0 ...
    # - attr(*, "class")= chr "rle"
    
    
    for( i in seq(y$values)[-1] ) {
       if(y$values[i] == 0) {
          y$lengths[i-1] = y$lengths[i] + y$lengths[i-1]
          y$lengths[i] = 0
       }
    }
    
    #str(y)
    #List of 2
    # $ lengths: num [1:11] 4 0 6 0 6 0 2 0 4 0 ...
    # $ values : num [1:11] 1 0 0.5 0 1 0 1 0 0.5 0 ...
    # - attr(*, "class")= chr "rle"
    
    inverse.rle(y)
    #  [1] 1.0 1.0 1.0 1.0 0.5 0.5 0.5 0.5 0.5 0.5 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0.5
    # [20] 0.5 0.5 0.5 1.0
    

提交回复
热议问题