Christian Convey
2006-Nov-15 13:30 UTC
[R] Newbie: how to get unique x unique x aggregate chart?
I'm very new to R, so please forgive me if I just missed the answer in existing documentation... I have a data set with at least three columns, X, Y, and Z. I want to produce a chart where one axis shows all the unique values of X, and the other axis shows all the unique values of Y. Each cell within the chart should contain the result of applying an aggregate function (such as mean(), for example) to Z value of those rows that are associated with that cell (via their X and Y values). Can someone recommend a good way to do this? Thanks very much, Christian [[alternative HTML version deleted]]
Jeffrey Robert Spies
2006-Nov-15 15:08 UTC
[R] Newbie: how to get unique x unique x aggregate chart?
I'm not sure I understand the question, but you might look into the following functions: unique heatmap image Again, if I understand the question, you would create a length(unique (x)) by length(unique(y)) sized matrix, and fill it with appropriate values of z. Then pass that to heatmap or image. Hope that helps--feel free to tell me if I've answered the wrong question, Jeff. On Nov 15, 2006, at 8:30 AM, Christian Convey wrote:> I'm very new to R, so please forgive me if I just missed the answer in > existing documentation... > > I have a data set with at least three columns, X, Y, and Z. > > I want to produce a chart where one axis shows all the unique > values of X, > and the other axis shows all the unique values of Y. Each cell > within the > chart should contain the result of applying an aggregate function > (such as > mean(), for example) to Z value of those rows that are associated > with that > cell (via their X and Y values). > > Can someone recommend a good way to do this? > > Thanks very much, > Christian > > [[alternative HTML version deleted]] > > ______________________________________________ > 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 > and provide commented, minimal, self-contained, reproducible code.
Chuck Cleland
2006-Nov-15 15:21 UTC
[R] Newbie: how to get unique x unique x aggregate chart?
Christian Convey wrote:> I'm very new to R, so please forgive me if I just missed the answer in > existing documentation... > > I have a data set with at least three columns, X, Y, and Z. > > I want to produce a chart where one axis shows all the unique values of X, > and the other axis shows all the unique values of Y. Each cell within the > chart should contain the result of applying an aggregate function (such as > mean(), for example) to Z value of those rows that are associated with that > cell (via their X and Y values). > > Can someone recommend a good way to do this?I'm not sure exactly what kind of chart you want, but this may give you some ideas. library(reshape) # Provides melt() and cast() df <- data.frame(X = rep(c("A","B","C","D"), each = 40), Y = rep(1:4, 40), Z = runif(160)) df <- melt(df, measure.var="Z") newdf <- cast(df, X + Y ~ ., fun.aggregate = mean) library(lattice) # Provides barchart and bwplot() barchart(value ~ X | Y, data = newdf, layout=c(4,1,1)) barchart(value ~ X, groups=Y, data = newdf, auto.key=TRUE) Also, you might consider this which shows much more than the location of Z: bwplot(Z ~ X | Y, data = df, layout=c(4,1,1)) Finally, here is another possibly useful way to aggregrate df (an alternative to melt() and cast() which gives a different structure): with(df, tapply(Z, list(X,Y), mean))> Thanks very much, > Christian > > [[alternative HTML version deleted]] > > ______________________________________________ > 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 > and provide commented, minimal, self-contained, reproducible code. >-- Chuck Cleland, Ph.D. NDRI, Inc. 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