[R] [FORGED] Issues with the way Apply handled NA's
Rolf Turner
r.turner at auckland.ac.nz
Mon Nov 14 22:04:20 CET 2016
On 15/11/16 09:52, Olu Ola via R-help wrote:
> Hello,I have a data set called plabor and have the following format:
>
> | ColA | ColB | Colc |
> | 6 | 25 | 3 |
> | NA | NA | NA |
> | 3 | 2 | 19 |
> | 4 | 7 | NA |
>
>
> I wanted to find the product of the three columns for each of the rows and I used the apply function follows:
> plabor$colD = apply(plabor[c("colA","colB","colc")],1,prod,na.rm=T)
> The result are as follows:
>
> | ColA | ColB | Colc | colD |
> | 6 | 25 | 3 | 450 |
> | NA | NA | NA | 1 |
> | 3 | 2 | 19 | 114 |
> | 4 | 7 | NA | 28 |
>
>
> The second row results is 1 instead of being ignored.
> How do I deal with this issue because I do not want to exclude these data points with all NA's?
What do you mean by "ignored"? If you really want rows of your matrix
that are all NA to be omitted from consideration, delete such rows from
your matrix a priori.
If you want the product of such rows to be NA rather than 1, use a
"customised" function rather than prod() in your apply, with an
appropriate if-else construction in the customised function.
It's very easy, and I won't tell you the details because I think it's
time you actually learned something about R (given that you are using
R), and one learns by doing.
cheers,
Rolf Turner
--
Technical Editor ANZJS
Department of Statistics
University of Auckland
Phone: +64-9-373-7599 ext. 88276
More information about the R-help
mailing list