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.
 
    