[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.

   x1+x2

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

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)

Similarly

   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