Dear Ruser's

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" in the dummy dataframe.

I have ever tried to solve this problem by using doBy package. But, I
failed. I ask for the advice on how to use "lapplyBy" function of "doBy"
package.

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'.

dummy dataframe:
> 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

Thanks in advance.

Sincerely,

Mao J-F

	[[alternative HTML version deleted]]


