[R] Replacing each NA with the most recent non-NA prior to it

John m|@ojpm @end|ng |rom gm@||@com
Wed Feb 27 06:48:24 CET 2019


Thanks! That works!!

Duncan Murdoch <murdoch.duncan using gmail.com> 於 2019年2月27日 週三 下午12:06寫道:

> On 26/02/2019 10:34 p.m., John wrote:
> > If I use the na.locf function to replace each NA with the most recent
> > non-NA prior to it, then
> >
> >> na.locf(c(NA,NA,1,4,NA,2))
> > [1] 1 1 1 4 4 2
> >
> > I want to keep leading NA's, and this is what I want
> >   NA NA 1 4 4 2
> >
> > How can I do it?
> >
> > The following do not work:
> >
> >> na.locf(c(NA,NA,1,4,NA,2), na.rm=FALSE)
> > Error in na.locf(c(NA, NA, 1, 4, NA, 2), na.rm = FALSE) :
> >    unused argument (na.rm = FALSE)
> >> na.locf(c(NA,NA,1,4,NA,2), na.rm=TRUE)
> > Error in na.locf(c(NA, NA, 1, 4, NA, 2), na.rm = TRUE) :
> >    unused argument (na.rm = TRUE)
> >
> >
> > Thank you very much!
>
>
> There are at least two packages (zoo and imputeTS) which have na.locf
> functions.  The one in zoo does what you want:
>
>  > zoo::na.locf(c(NA,NA,1,4,NA,2), na.rm=FALSE)
> [1] NA NA  1  4  4  2
>
> Duncan Murdoch
>
>
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list