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

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to