[R] tapply question

Jacques VESLOT jacques.veslot at good.ibl.fr
Thu Jul 6 16:10:33 CEST 2006


i think you can't have column with the same names.

 > data.frame(AAA=1:3, AAA=4:6)
   AAA AAA.1
1   1     4
2   2     5
3   3     6

but you could subset the data frame by names using substring():

sapply(unique(substring(names(data1), 1, 3)), function(x)
	rowMeans(data1[, substring(names(data1), 1, 3) == x])


-------------------------------------------------------------------
Jacques VESLOT

CNRS UMR 8090
I.B.L (2ème étage)
1 rue du Professeur Calmette
B.P. 245
59019 Lille Cedex

Tel : 33 (0)3.20.87.10.44
Fax : 33 (0)3.20.87.10.31

http://www-good.ibl.fr
-------------------------------------------------------------------


markleeds at verizon.net a écrit :
> I think I understand tapply but i still
> can't figure out how to do the following.
> 
> I have a dataframe where some of the column names are the same
> and i want to make a new dataframe where columns
> that have the same name are averaged by row.
> 
> so, if the data frame, DF, was 
> 
> AAA    BBB      CCC   AAA DDD
> 1       0        7     11  13
> 2        0       8     12  14
> 3        0       6      0  15
> 
> then the resulting data frame would be exactly the same except
> that the AAA column would be 
> 
> 6   comes from  (11 + 1)/2
> 7    comes from  (12 + 2)/2
> 3   stays 3 because the element in the other AAA is zero
> so i don't want to average that one. it shoulsd just stay 3.
> 
> So, I do 
> 
> DF[DF == 0]<-NA
> rowaverage<-function(x) x[rowMeans(forecastDf[x],na.rm=TRUE)
> revisedDF<-tapply(seq(DF),names(DF),rowmeans)
> 
> there are two problems with this :
> 
> 1) i need to go through the rows of the same name, not the columns
> so i don't think seq(DF) is right because that goes through 
> the columns but i want to go through rows.
> 
> 2) BBB will come back with ALL NA's ( since
> it was unique and there was nothing else to average ( and I don't know how to transform that BB column to all zero's.
> 
> thanks and i'm sorry for so many questions. i'm getting bettter with this stuff and my questions will decrease soon.
> 
> my guess is that i no longer should be using tapply ?
> and should be using some other version of apply.
> thanks
>                                          mark
> 
> ______________________________________________
> 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
>



More information about the R-help mailing list