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]]
______________________________________________
[email protected] 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.