[R] vector-factor operation

Petr Pikal petr.pikal at precheza.cz
Fri Apr 14 10:35:45 CEST 2006


Hi

vec<-runif(100)
fac<-factor(sample(letters[1:4],100, rep=T))
tap<-tapply(vec, fac, mean)
new.vec<-tap[fac]
lm1 <- lm(vec ~ fac)
all.equal(as.numeric(predict(lm1)),as.numeric(new.vec))
[1] TRUE

HTH
Petr


On 14 Apr 2006 at 17:46, Murray Jorgensen wrote:

Date sent:      	Fri, 14 Apr 2006 17:46:12 +1200
From:           	Murray Jorgensen <maj at stats.waikato.ac.nz>
To:             	r-help at stat.math.ethz.ch
Subject:        	[R] vector-factor operation

> I found myself wanting to average a vector [vec] within each level of
> a factor [Fac], returning a vector of the same length as vec. After a
> while I realised that
> 
> lm1 <- lm(vec ~ Fac)
> fitted(lm1)
> 
> did what I want.
> 
> But there must be another way to do this, and it would be good to be
> able to apply other functions than mean() in this way.
> 
> Cheers, Murray
> -- 
> Dr Murray Jorgensen      http://www.stats.waikato.ac.nz/Staff/maj.html
> Department of Statistics, University of Waikato, Hamilton, New Zealand
> Email: maj at waikato.ac.nz                                Fax 7 838 4155
> Phone  +64 7 838 4773 wk    Home +64 7 825 0441    Mobile 021 1395 862
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html

Petr Pikal
petr.pikal at precheza.cz




More information about the R-help mailing list