[R] Merge and replace data

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Tue Sep 5 13:45:13 CEST 2023

On 05/09/2023 4:55 a.m., roslinazairimah zakaria wrote:
> Hi all,
> I have these data
> x1 <- c(116,0,115,137,127,0,0)
> x2 <- c(0,159,0,0,0,159,127)
> I want : xx <- c(116,115,137,127,159, 127)
> I would like to merge these data into one column. Whenever the data is '0'
> it will be replaced by the value in the column which is non zero..
> I tried append and merge but fail to get what I want.

Others have pointed out pmax(x1, x2).  For the sample data, even x1+x2 
would give the same answer.

The real question is what you want to do if both x1 and x2 have non-zero 
entries, or negative entries:

   pmax(x1, x2)

will pick the larger one.  It might be zero if the other is negative, 
and that doesn't match your description.


will just give the sum, which doesn't match your description if both are 

But maybe you want the x1 value unless it is zero, even if it is smaller 
than the x2 value:  then you would use

   ifelse(x1 != 0, x1, x2)


   ifelse(x2 != 0, x2, x1)

would prefer the x2 value.

You should think about what you would do in these other cases as well.

Duncan Murdoch

More information about the R-help mailing list