[R] operation on a data.frame

Federico Abascal fabascal at cnb.csic.es
Mon May 26 12:05:44 CEST 2008


Estimated colleagues:

Here is a problem I am trying to solve: I have a data frame of this kind

df <- data.frame(c("A","B","C","A","A","B"), matrix(1:18,nrow=6,ncol=3))
rownames(df) <- c("One","Two","Three","Four","Five","Six")
colnames(df) <- c("C1","C2","C3","C4")
df
      C1 C2 C3 C4
One    A  1  7 13
Two    B  2  8 14
Three  C  3  9 15
Four   A  4 10 16
Five   A  5 11 17
Six    B  6 12 18


I would like to obtain a data.frame or matrix in which rows with an
equal string on column "C1" are averaged. In the previous example, rows
"One", "Four" and "Five" should be averaged because the three have "A"
con C1. The resulting row should be: "A"  10/3  28/3   46/3

In SQL I think I could do this by selecting c1,c2,c3 and c4, grouping by
c1 and averaging c2, c3,and c4.

Is there some way to do this easily in R?

Thank you very much,
Federico



More information about the R-help mailing list