[R] how to assign a group mean to individual cases?

Moshe Olshansky m_olshansky at yahoo.com
Tue Nov 13 01:22:10 CET 2007


You can do the following:

x <- 1:10
g <- rep(3:5,len=10)
df <- data.frame(g=g,x=x)
y <- aggregate(df$x,list(df$g))
z <- sapply(df$g,function(x) which(y[,1]==x))
df1 <- data.frame(df,group.mean=y[z,2])

--- Casey Klofstad <klofstad at gmail.com> wrote:

> I need advice on how to create a variable that is
> the group mean of
> another variable.
> 
> For example, I have a variable called x for which
> each row in the data
> set has a value. I also have a nominal variable
> called g that
> indicates which of 100 different groups each row
> belongs to.
> 
> So, I want to create a new variable called w, which
> is the group mean
> of x for which ever group the row belongs to (as
> indicated by variable
> g). Ideally, I'd also like to take out each row's
> value of x before
> calculating the group mean assigned to that row.
> 
> I've already tried the aggregate command. That gives
> me the group
> means, but does not allow me to assign them to each
> row in the data
> set.
> 
> THANKS!
> -- 
> Casey A. Klofstad
> University of Miami
> Department of Political Science
> Coral Gables, FL
> 
> klofstad at gmail.com
> http://moya.bus.miami.edu/~cklofstad
> 
> ______________________________________________
> 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.
>



More information about the R-help mailing list