In df
i would like to replace the NA values with the previous non-NA value for each id
id<-c(1,1,1,1,2,2,2)
purchase<-c(20,NA,NA,10,NA,NA,5)
df<-data.frame(id,purchase)
id purchase
1 20
1 NA
1 NA
1 10
2 NA
2 NA
2 5
The output should ideally look like:
id purchase
1 20
1 20
1 20
1 10
2 NA
2 NA
2 5
I am aware of Replacing NAs with latest non-NA value, but it does not do it per group. Any help would be appreciated.