On 8/7/2008 7:01 AM, glaporta wrote:
Hi folk,
I tried this and it works just perfectly
tapply(iris[,1],iris[5],mean)
but, how to obtain a single table from multiple variables? In tapply x is an atomic object so this code doesn't work tapply(iris[,1:4],iris[5],mean)

Thanx and great summer holidays
Gianandrea

  Here is one way:

> apply(iris[,1:4], 2, function(x){tapply(x, list(iris[,5]), mean)})

           Sepal.Length Sepal.Width Petal.Length Petal.Width
setosa            5.006       3.428        1.462       0.246
versicolor        5.936       2.770        4.260       1.326
virginica         6.588       2.974        5.552       2.026

  Here is another:

> library(reshape)

> iris.melt <- melt(iris, measure.var=names(iris)[1:4])

> cast(iris.melt, variable + Species ~ ., mean)

       variable    Species (all)
1  Sepal.Length     setosa 5.006
2  Sepal.Length versicolor 5.936
3  Sepal.Length  virginica 6.588
4   Sepal.Width     setosa 3.428
5   Sepal.Width versicolor 2.770
6   Sepal.Width  virginica 2.974
7  Petal.Length     setosa 1.462
8  Petal.Length versicolor 4.260
9  Petal.Length  virginica 5.552
10  Petal.Width     setosa 0.246
11  Petal.Width versicolor 1.326
12  Petal.Width  virginica 2.026

--
Chuck Cleland, Ph.D.
NDRI, Inc. (www.ndri.org)
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 512-0171 (M, W, F)
fax: (917) 438-0894

______________________________________________
R-help@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.

Reply via email to