Hello, I am trying to calculate the mean value of each row in a data frame (d), I am having troubles and getting errors using the code I have written. Below is a brief example of the code, any thought or suggestions would be great. Thank you for your time, Doug # Example Code: d <- data.frame(st1=c(1,2,3,4), st2=c(2,5,6,7), st3=c(5,5,NA,7), st4=c(6,5,7,8)) avg <- rep(NA,length(d[,1])) for (i in 1:length(d[,1])) { avg[i] = mean(d[i,1:4], na.rm=TRUE) } # Final Output wanted. st1 st2 st3 st4 avg 1 1 2 5 6 3.50 2 2 5 5 5 4.25 3 3 6 NA 7 5.33 4 4 7 7 8 6.50 -- --------------------------------- Douglas M. Hultstrand, MS Senior Hydrometeorologist Metstat, Inc. Windsor, Colorado voice: 720.771.5840 email: dmhultst at metstat.com web: http://www.metstat.com
Doug - Try> d$avg = apply(d,1,mean,na.rm=TRUE) > dst1 st2 st3 st4 avg 1 1 2 5 6 3.500000 2 2 5 5 5 4.250000 3 3 6 NA 7 5.333333 4 4 7 7 8 6.500000 (If you must use a loop, calculate mean(as.numeric(d[i,1:4])) Take a look at mean(d[1,1:4]) to see why your program doesn't work properly.) - Phil Spector Statistical Computing Facility Department of Statistics UC Berkeley spector at stat.berkeley.edu On Mon, 28 Jun 2010, Douglas M. Hultstrand wrote:> Hello, > > I am trying to calculate the mean value of each row in a data frame (d), I am > having troubles and getting errors using the code I have written. Below is a > brief example of the code, any thought or suggestions would be great. > > Thank you for your time, > Doug > > > # Example Code: > d <- data.frame(st1=c(1,2,3,4), st2=c(2,5,6,7), st3=c(5,5,NA,7), > st4=c(6,5,7,8)) > avg <- rep(NA,length(d[,1])) > > for (i in 1:length(d[,1])) { > avg[i] = mean(d[i,1:4], na.rm=TRUE) > } > > # Final Output wanted. > st1 st2 st3 st4 avg > 1 1 2 5 6 3.50 > 2 2 5 5 5 4.25 > 3 3 6 NA 7 5.33 > 4 4 7 7 8 6.50 > > -- > --------------------------------- > Douglas M. Hultstrand, MS > Senior Hydrometeorologist > Metstat, Inc. Windsor, Colorado > voice: 720.771.5840 > email: dmhultst at metstat.com > web: http://www.metstat.com > > ______________________________________________ > R-help at r-project.org mailing list > 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. >
Douglas M. Hultstrand wrote:> Hello, > > I am trying to calculate the mean value of each row in a data frame (d), > I am having troubles and getting errors using the code I have written. > Below is a brief example of the code, any thought or suggestions would > be great. > > Thank you for your time, > Doug > > > # Example Code: > d <- data.frame(st1=c(1,2,3,4), st2=c(2,5,6,7), st3=c(5,5,NA,7), > st4=c(6,5,7,8)) > avg <- rep(NA,length(d[,1])) > > for (i in 1:length(d[,1])) { > avg[i] = mean(d[i,1:4], na.rm=TRUE) > } > > # Final Output wanted. > st1 st2 st3 st4 avg > 1 1 2 5 6 3.50 > 2 2 5 5 5 4.25 > 3 3 6 NA 7 5.33 > 4 4 7 7 8 6.50 >d$avg <- rowMeans(d, na.rm = TRUE)
Hello Doug, I just wanted to add that a faster way to initialize a vector is: avg <- vector("numeric", nrow(d)) Also you might like nrow(d) over length(d[ , 1]) if the number of rows is what you are after. Its sister function is ncol() . Best regards, Josh On Mon, Jun 28, 2010 at 11:37 AM, Douglas M. Hultstrand <dmhultst at metstat.com> wrote:> Hello, > > I am trying to calculate the mean value of each row in a data frame (d), I > am having troubles and getting errors using the code I have written. ?Below > is a brief example of the code, any thought or suggestions would be great. > > Thank you for your time, > Doug > > > # Example Code: > d <- data.frame(st1=c(1,2,3,4), st2=c(2,5,6,7), st3=c(5,5,NA,7), > st4=c(6,5,7,8)) > avg <- rep(NA,length(d[,1])) > > for (i in 1:length(d[,1])) { > ? ? ? avg[i] = mean(d[i,1:4], na.rm=TRUE) > } > > # Final Output wanted. > ?st1 st2 st3 st4 ?avg > 1 ? 1 ? 2 ? 5 ? 6 3.50 > 2 ? 2 ? 5 ? 5 ? 5 4.25 > 3 ? 3 ? 6 ?NA ? 7 5.33 > 4 ? 4 ? 7 ? 7 ? 8 6.50 > > -- > --------------------------------- > Douglas M. Hultstrand, MS > Senior Hydrometeorologist > Metstat, Inc. Windsor, Colorado > voice: 720.771.5840 > email: dmhultst at metstat.com > web: http://www.metstat.com > > ______________________________________________ > R-help at r-project.org mailing list > 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. >-- Joshua Wiley Ph.D. Student, Health Psychology University of California, Los Angeles http://www.joshuawiley.com/