Dear arun, > dat1<-read.table("EL.csv",header=TRUE, sep=",",na.strings="NA") library(reshape2) res<-lapply(split(dat1,dat1$st),function(x) dcast(x,month~year,mean,value.var="discharge")) > res $EE month 2005 2006 2008 2009 1 1 1.7360776 0.8095275 1.6369044 0.8195241 2 2 0.6962079 3.8510720 0.4319758 2.3304495 3 3 1.0423625 2.7687266 0.2904245 0.7015527 4 4 2.4158326 1.2315324 1.4287387 1.5701019 $WW month 2008 2009 2010 1 1 1.4737028 2.314878 2.672661 2 2 1.6700918 2.609722 2.112421 3 3 3.2387775 7.305766 6.939536 4 4 6.7063592 18.745256 13.278218 i then eliminated the first column as i was interested in knowing the row wise mean of each sublist, by using res1 <- lapply(res, function(x)x[,1 ]) $EE 2005 2006 2008 2009 1 1.7360776 0.8095275 1.6369044 0.8195241 2 0.6962079 3.8510720 0.4319758 2.3304495 3 1.0423625 2.7687266 0.2904245 0.7015527 4 2.4158326 1.2315324 1.4287387 1.5701019 $WW 2008 2009 2010 1 1.4737028 2.314878 2.672661 2 1.6700918 2.609722 2.112421 3 3.2387775 7.305766 6.939536 4 6.7063592 18.745256 13.278218 now when i applied the "colMeans" command i was not able to calculate the mean as i got the following error >'x' must be an array of at least two dimensions i cant spot the mistake in the last 5 hours. you help is needed eliza