Sorry, there was a mistake in the previous mail:
Domenico Vistocco wrote:
A different solution (using aggregate for the table of means and merge
for adding it to the dataframe):
x1<-rep(c("A","B","C"),3)
x2<-c(rep(1,3),rep(2,3),1,2,1)
x3<-c(1,2,3,4,5,6,2,6,4)
x<-data.frame(x1,x2,x3) #here using data.frame the x1 variable is
directly converted to factor
x3means <- aggregate(x$x3, by=list(x$x1), FUN="mean")
merge(x, x3means, by.x="x1", by.y="Group.1")
#I forgot the second variable in the by argument (both for aggregate and
by):
x3means <- aggregate(x$x3, by=list(x$x1, x$x2), FUN="mean")
merge(x, x3means, by.x=c("x1","x2"), by.y=c("Group.1", "Group.2"))
Ciao,
domenico
Alan Cohen wrote:
Hi all,
I'm trying to improve my R skills and make my programming more
efficient and succinct. I can solve the following question, but
wonder if there's a better way to do it:
I'm trying to calculate mean by several variables and then put this
back into the original data set as a new variable. For example, if I
were measuring weight, I might want to have each individual's weight,
and also the group mean by, say, race, sex, and geographic region.
The following code works:
x1<-rep(c("A","B","C"),3)
x2<-c(rep(1,3),rep(2,3),1,2,1)
x3<-c(1,2,3,4,5,6,2,6,4)
x<-as.data.frame(cbind(x1,x2,x3))
x3.mean<-rep(0,nrow(x))
for (i in 1:nrow(x)){
+ x3.mean[i]<-mean(as.numeric(x[,3][x[,1]==x[,1][i]&x[,2]==x[,2][i]]))
+ }
cbind(x,x3.mean)
x1 x2 x3 x3.mean
1 A 1 1 1.5
2 B 1 2 2.0
3 C 1 3 3.5
4 A 2 4 4.0
5 B 2 5 5.5
6 C 2 6 6.0
7 A 1 2 1.5
8 B 2 6 5.5
9 C 1 4 3.5
However, I'd love to be able to do this with "apply" rather than a
for-loop. Or is there a built-in function? Any suggestions?
Also, any way to avoid the hassles with having to convert to a data
frame and then again to numeric when one variable is character?
Cheers,
Alan Cohen
______________________________________________
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.
______________________________________________
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.
______________________________________________
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.