Dear Ruser's I ask for helps on how to substitute missing values (NAs) by mean of the group it is belonging to.
my dummy dataframe is: > df group traits 1 BSPy01-10 NA 2 BSPy01-10 7.3 3 BSPy01-10 7.3 4 BSPy01-11 5.3 5 BSPy01-11 5.4 6 BSPy01-11 5.6 7 BSPy01-11 NA 8 BSPy01-11 NA 9 BSPy01-11 4.8 10 BSPy01-12 8.1 11 BSPy01-12 6.0 12 BSPy01-12 6.0 13 BSPy01-13 6.1 I want to substitute each "NA" by the group mean of which the "NA" is belonging to. For example, substitute the first record of traits "NA" by the mean of "BSPy01-10". I have ever tried to solve this problem by using doBy package. But, I failed. I ask for the right solutions by using doBy package or not. The commands used and the output I got are as followed: library(doBy) df<-orderBy(~group,data=df) # succeeded f1<-function(x){m<-mean(x, na.ram=TRUE); x[is.na(x)]<-m; x} # succeeded datatraits<-lapplyBy(traits~group,data=df, FUN=f1(traits)) # failed errors: mean(x, na.ram = TRUE), can not find 'traits'. Thanks in advance. Sincerely, Mao J-F [[alternative HTML version deleted]] ______________________________________________ R-help@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.