Hello,I have a dataset that is similar to the one?as follows:> Df.1 <- data.frame(A = c(5,4,7,6,8,4),B = (c(1,5,2,4,9,1)),C=(c(2,3,NA,5,NA,9))) > Df.1A B C 1 5 1 2 2 4 5 3 3 7 2 NA 4 6 4 5 5 8 9 NA 6 4 1 9> Df.1$D = apply(Df.1, 1, prod, na.rm=T) > Df.1$D[1] 10 60 14 120 72 36 > Df.1A B C D 1 5 1 2 10 2 4 5 3 60 3 7 2 NA 14 4 6 4 5 120 5 8 9 NA 72 6 4 1 9 36I intend to obtain a column D that takes into account na.rm=T but 'apply' does not work in R 3.2.2 A way forward will be greatly appreciated. [[alternative HTML version deleted]]
Df.1$D looks correct to me. For example, in the third row, 7*2=14 is correct with the NA removed. -Don -- Don MacQueen Lawrence Livermore National Laboratory 7000 East Ave., L-627 Livermore, CA 94550 925-423-1062 On 11/11/16, 12:45 PM, "R-help on behalf of Olu Ola via R-help" <r-help-bounces at r-project.org on behalf of r-help at r-project.org> wrote:> Hello,I have a dataset that is similar to the one as follows: > >> Df.1 <- data.frame(A = c(5,4,7,6,8,4),B >>(c(1,5,2,4,9,1)),C=(c(2,3,NA,5,NA,9))) >> Df.1 > A B C >1 5 1 2 >2 4 5 3 >3 7 2 NA >4 6 4 5 >5 8 9 NA >6 4 1 9 >> Df.1$D = apply(Df.1, 1, prod, na.rm=T) >> Df.1$D[1] 10 60 14 120 72 36 >> Df.1 > A B C D >1 5 1 2 10 >2 4 5 3 60 >3 7 2 NA 14 >4 6 4 5 120 >5 8 9 NA 72 >6 4 1 9 36I intend to obtain a column D that takes into account na.rm=T >but 'apply' does not work in R 3.2.2 > >A way forward will be greatly appreciated. > > [[alternative HTML version deleted]] > >______________________________________________ >R-help at 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.
Olu, I think you may have misread what na.rm is supposed to do. I think you are getting the correct value. If you want the vectors that contain NA values to be evaluated to NA then you will need to set na.rm to FALSE (which is the default for prod()). prod(c(7, 2, NA), na.rm = TRUE) [1] 14 prod(c(7, 2, NA), na.rm = FALSE) [1] NA Mark R. Mark Sharp, Ph.D. Director of Data Science Core Southwest National Primate Research Center Texas Biomedical Research Institute P.O. Box 760549 San Antonio, TX 78245-0549 Telephone: (210)258-9476 e-mail: msharp at TxBiomed.org> On Nov 11, 2016, at 2:45 PM, Olu Ola via R-help <r-help at r-project.org> wrote: > > Hello,I have a dataset that is similar to the one as follows: > >> Df.1 <- data.frame(A = c(5,4,7,6,8,4),B = (c(1,5,2,4,9,1)),C=(c(2,3,NA,5,NA,9))) >> Df.1 > A B C > 1 5 1 2 > 2 4 5 3 > 3 7 2 NA > 4 6 4 5 > 5 8 9 NA > 6 4 1 9 >> Df.1$D = apply(Df.1, 1, prod, na.rm=T) >> Df.1$D[1] 10 60 14 120 72 36 >> Df.1 > A B C D > 1 5 1 2 10 > 2 4 5 3 60 > 3 7 2 NA 14 > 4 6 4 5 120 > 5 8 9 NA 72 > 6 4 1 9 36I intend to obtain a column D that takes into account na.rm=T but 'apply' does not work in R 3.2.2 > > A way forward will be greatly appreciated. > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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.CONFIDENTIALITY NOTICE: This e-mail and any files and/or...{{dropped:10}}
Hello,I quite understand that apply is doing what it is supposed to do. I actually found that example online. However, "apply" package is not compatible with R 3.2.2 and as a result, I could not use the code. That is why I am asking for an alternative to "apply" that can be used to do the same thing. Regards On Friday, November 11, 2016 4:08 PM, "MacQueen, Don" <macqueen1 at llnl.gov> wrote: Df.1$D looks correct to me. For example, in the third row, 7*2=14 is correct with the NA removed. -Don -- Don MacQueen Lawrence Livermore National Laboratory 7000 East Ave., L-627 Livermore, CA 94550 925-423-1062 On 11/11/16, 12:45 PM, "R-help on behalf of Olu Ola via R-help" <r-help-bounces at r-project.org on behalf of r-help at r-project.org> wrote:> Hello,I have a dataset that is similar to the one as follows: > >> Df.1 <- data.frame(A = c(5,4,7,6,8,4),B >>(c(1,5,2,4,9,1)),C=(c(2,3,NA,5,NA,9))) >> Df.1 >? A B? C >1 5 1? 2 >2 4 5? 3 >3 7 2 NA >4 6 4? 5 >5 8 9 NA >6 4 1? 9 >> Df.1$D = apply(Df.1, 1, prod, na.rm=T) >> Df.1$D[1]? 10? 60? 14 120? 72? 36 >> Df.1 >? A B? C? D >1 5 1? 2? 10 >2 4 5? 3? 60 >3 7 2 NA? 14 >4 6 4? 5 120 >5 8 9 NA? 72 >6 4 1? 9? 36I intend to obtain a column D that takes into account na.rm=T >but 'apply' does not work in R 3.2.2 > >A way forward will be greatly appreciated. > >??? [[alternative HTML version deleted]] > >______________________________________________ >R-help at 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.[[alternative HTML version deleted]]