Hello, I have a dataframe which I read from a file: df <- readtable(myFile); The dataframe has 4 columns: "model", "count", "value" and "date" where "model" and "date" are made of charactors and "count" and "value" are numbers. An example is like: model count value date A 4 20.8 7/1/2005 A 3 10.2 7/2/2005 B 7 14.2 7/1/2005 B 1 6.2 7/2/2005 A 2 11 7/1/2005 B 9 65.2 7/2/2005 Now I want to get the total count and value for each model/date pair, like model count value date A 6 31.8 7/1/2005 A 3 10.2 7/2/2005 B 7 14.2 7/1/2005 B 10 67.4 7/2/2005 Anyone can tell me how to do this? Thanks. Fan [[alternative HTML version deleted]]
"Zhang, Fan" <fzhang at doubleclick.net> writes:> Now I want to get the total count and value for each model/date pair, > like > model count value date > A 6 31.8 7/1/2005 > A 3 10.2 7/2/2005 > B 7 14.2 7/1/2005 > B 10 67.4 7/2/2005 > > Anyone can tell me how to do this?> aggregate(df[,c("count","value")],df[,c("date","model")],sum)date model count value 1 7/1/2005 A 6 31.8 2 7/2/2005 A 3 10.2 3 7/1/2005 B 7 14.2 4 7/2/2005 B 10 71.4 -- O__ ---- Peter Dalgaard ??ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
Thanks for your answer, Peter. Now I have a new data frame which is sorted by (model,date) pair. Since the sorting is done to charactors, I have 7/1/2005 followed by 7/10/2005 instead of 7/2/2005. How can I do the aggregation and at the same time, make the result sorted the way I want (i.e, 7/1/2005 followd by 7/2/2005)? Thanks, Fan -----Original Message----- From: pd at pubhealth.ku.dk [mailto:pd at pubhealth.ku.dk] On Behalf Of Peter Dalgaard Sent: Thursday, July 14, 2005 1:29 PM To: Zhang, Fan Cc: r-help at stat.math.ethz.ch Subject: Re: [R] Calculate of data frame "Zhang, Fan" <fzhang at doubleclick.net> writes:> Now I want to get the total count and value for each model/date pair, > like > model count value date > A 6 31.8 7/1/2005 > A 3 10.2 7/2/2005 > B 7 14.2 7/1/2005 > B 10 67.4 7/2/2005 > > Anyone can tell me how to do this?> aggregate(df[,c("count","value")],df[,c("date","model")],sum)date model count value 1 7/1/2005 A 6 31.8 2 7/2/2005 A 3 10.2 3 7/1/2005 B 7 14.2 4 7/2/2005 B 10 71.4 -- O__ ---- Peter Dalgaard ??ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907