[R] best way to aggregate / rearrange data.frame with different data types

Martin Batholdy batholdy at googlemail.com
Mon Jul 11 17:55:20 CEST 2011


I have a data.frame that looks like this:

Subject <- c(rep(1,4), rep(2,4), rep(3,4))
y <- rnorm(12, 3, 2)
gender <- c(rep("w",4), rep("m",4), rep("w",4))
comment <- c(rep("comment A",4), rep("comment B",4), rep("comment C",4))

data <- data.frame(Subject,y,gender,comment)

   Subject           y gender   comment
1        1  2.86495339      w comment A
2        1  3.33758993      w comment A
3        1  7.00301094      w comment A
4        1  3.81585998      w comment A
5        2  2.50300460      m comment B
6        2  4.93830489      m comment B
7        2  5.08184289      m comment B
8        2  4.00552691      m comment B
9        3  3.16131181      w comment C
10       3  4.61620021      w comment C
11       3  3.68288799      w comment C
12       3 -0.05049953      w comment C

So I have multiple lines for one subject because of a repeated measurement of variable y
(the rest of the variables stay the same, like gender).

Now I would like to transform this data.frame in two ways:

1. a aggregated form, 
where I only have one row left for each subject - for numerical variables within the data.frame (like y) a mean should be calculated.

2. a restructured form,
where I only have one row for each subject, but four different y-columns (y1, y2, y3, y4).

What is the easiest way to do this?
Are there any functions who do this kind of data-frame rearranging in one step?

More information about the R-help mailing list