[R] with replace na with 0?

Rolf Turner r@turner @end|ng |rom @uck|@nd@@c@nz
Sat Jun 12 01:16:29 CEST 2021


On Fri, 11 Jun 2021 16:15:06 +0200
Enrico Gabrielli <enricogabrielli76.peragr using gmail.com> wrote:

> Hello
> I almost got through the problem in post "aggregation of irregular
> interval time-series"
> I just don't understand how to fix that when I try
> ''
> with(datatable,ifelse(is.na(x),y,x))
> ''
> if y is na
> replaces me with 0
> and not with na
> 
> Thank you

Works fine for me.  There's something going on that you're not
telling us or have messed up.

Example:

x <- 1:10
x[c(1,3,5)] <- NA
y <- (1:10)/10
y[c(3,5,7)] <- NA
mung <- data.frame(x=x,y=y)
gorp <- with(mung,ifelse(is.na(x),y,x))
cbind(mung,result=gorp)

No spurious zeroes.

Note however that this is yet another example of the unnecessary use of
ifelse().  Much better is:

gorp2 <- x
i <- is.na(x)
gorp2[i] <- y[i]

Check:

all.equal(gorp,gorp2) # TRUE

As has been pointed out, you should include a minimal reproducible
example in questions such as this.  Creating such an example almost
always reveals the source of the problem so that you can solve it
yourself.

cheers,

Rolf Turner

-- 
Honorary Research Fellow
Department of Statistics
University of Auckland
Phone: +64-9-373-7599 ext. 88276



More information about the R-help mailing list