Filling data frame with previous row value
calculated-columns, dataframe, r
Solution
Perhaps you can make use of `na.locf` from the "zoo" package after setting values of "0" to `NA`. Assuming your `data.frame` is called "mydf":
mydf$state <- mydf$temp
mydf$state[mydf$state == 0] <- NA
library(zoo)
mydf$state <- na.locf(mydf$state)
# random temp state
# 1 0.5024234 1.0 1.0
# 2 0.6875941 0.0 1.0
# 3 0.7418837 0.0 1.0
# 4 0.4453640 0.0 1.0
# 5 0.5062614 0.5 0.5
# 6 0.5163650 0.0 0.5
If there were `NA` values in your original `data.frame` in the "temp" column, and you wanted to keep them as `NA` in the newly generated "state" column too, that's easy to take care of. Just add one more line to reintroduce the `NA` values:
mydf$state[is.na(mydf$temp)] <- NA
Problem
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 temp 0.502423373 1 0.687594055 0 0.741883739 0 0.445364032 0 0.50626137 0.5 0.516364981 0 ... ``` I want to fill column3 so it takes the last non-zero number (1 or .5 in this example) and continuously fills the following rows with that value until it hits a row with a different number. then it repeats the process for the entire column. ``` random temp state 0.502423373 1 1 0.687594055 0 1 0.741883739 0 1 0.445364032 0 1 0.50626137 0.5 0.5 0.516364981 0 0.5 0.807804708 0 0.5 0.247948445 0 0.5 0.46573337 0 0.5 0.103705154 0 0.5 0.079625868 1 1 0.938928944 0 1 0.677713019 0 1 0.112231619 0 1 0.165907178 0 1 0.836195267 0 1 0.387712998 1 1 0.147737077 0 1 0.439281543 0.5 0.5 0.089013503 0 0.5 0.84174743 0 0.5 0.931738707 0 0.5 0.807955172 1 1 ``` thanks for any and all help