I would like to have all NA values replaced by the Last Observation Carried Forward (LOCF) method in R. The data set I have is below:
Value1 Value2 Value3 Group
100 56 82 Group1
150 NA 97 Group2
NA 66 NA Group3
120 NA NA Group4
I would like to create the following data set:
Value1 Value2 Value3 Group
100 56 82 Group1
150 56 97 Group2
150 66 97 Group3
120 66 97 Group4
Any insight on how to do this would be greatly appreciated.
You could use fill
from tidyr
.
tidyr::fill(df, everything())
# Value1 Value2 Value3 Group
#1 100 56 82 Group1
#2 150 56 97 Group2
#3 150 66 97 Group3
#4 120 66 97 Group4
Or with zoo::na.locf
df[] <- lapply(df, zoo::na.locf)
data
df <- structure(list(Value1 = c(100L, 150L, NA, 120L), Value2 = c(56L,
NA, 66L, NA), Value3 = c(82L, 97L, NA, NA), Group = structure(1:4,
.Label = c("Group1", "Group2", "Group3", "Group4"), class = "factor")),
class = "data.frame", row.names = c(NA, -4L))