Dear All, I created a script to calculate averages - two groups: "parcel" and "date" - and, based on these averages, make a graph. The problem is that 'R' does not recognize the first column even if I try to insert one. A brief example Raw data: Data <- sample(1:100, 30, replace = FALSE, prob = NULL) Date <- rep(c("02/30/2004","03/15/2004", "04/16/2004", "06/14/2004", "07/08/2004"), 6) Parcel <- rep(c("DRY", "CONTROL"),15) Df <- data.frame(Parcel, Date, Data) Res <- tapply(Df$Data, list(Date = Df$Date, Parcel = Df$Parcel), mean)> ResParcel Date CONTROL DRY 02/30/2004 53.00000 52.33333 03/15/2004 54.00000 67.66667 04/16/2004 54.66667 30.00000 06/14/2004 27.66667 20.00000 07/08/2004 59.00000 38.00000> colnames(Res)[1] "CONTROL" "DRY"> matplot(Res[,1], Res[,-1], type = "l")### It does not recognize the colunm "Date". Why? Thanks in advance! Paulo ________________________________________ Paulo M. Brando Instituto de Pesquisa Ambiental da Amazonia (IPAM) Santarem, PA, Brasil. Av. Rui Barbosa, 136. Fone: + 55 93 522 55 38 www.ipam.org.br E-mail: pmbrando at ipam.org.br
Gabor Grothendieck
2005-Jun-20 15:43 UTC
[R] RES: another aov results interpretation question
On 6/20/05, Paulo Brando <pmbrando at ipam.org.br> wrote:> > Dear All, > > I created a script to calculate averages - two groups: "parcel" and > "date" - and, based on these averages, make a graph. The problem is that > 'R' does not recognize the first column even if I try to insert one. > > A brief example > > Raw data: > > Data <- sample(1:100, 30, replace = FALSE, prob = NULL) > Date <- rep(c("02/30/2004","03/15/2004", "04/16/2004", "06/14/2004", > "07/08/2004"), 6) > Parcel <- rep(c("DRY", "CONTROL"),15) > > Df <- data.frame(Parcel, Date, Data) > > Res <- tapply(Df$Data, list(Date = Df$Date, Parcel = Df$Parcel), mean) > > > > Res > Parcel > Date CONTROL DRY > 02/30/2004 53.00000 52.33333 > 03/15/2004 54.00000 67.66667 > 04/16/2004 54.66667 30.00000 > 06/14/2004 27.66667 20.00000 > 07/08/2004 59.00000 38.00000 > > > colnames(Res) > [1] "CONTROL" "DRY" > > > matplot(Res[,1], Res[,-1], type = "l") > > ### It does not recognize the colunm "Date". Why?Date is a not a column in the matrix -- it is the name of the row dimension (and Parcel is the name of the column dimension). Res is a 5 by 2 matrix whose colnames are CONTROL and DRY. Try this: dimnames(Res) dim(Res) # 5 by 2 Also note that the first date (Feb 30th) is illegal and matplot does not work with dates in any case. Fix up the erroneous date and convert the row names to an object, xx, of chron or Date class, using plot for the axes and matlines for the lines: xx <- format(rownames(Res), "%m/%d/%Y") # Date class plot(range(xx), range(Res), type = "n") # axes matlines(xx, Res) More on dates is in R News 4/1.