Hi, dat1<- read.table(text=" name number a 2 a 3 b 5 b 7 c 9 c 1 ",sep="",header=TRUE,stringsAsFactors=FALSE)
aggregate(number~name,data=dat1,sum) # name number #1 a 5 #2 b 12 #3 c 10 #or library(plyr) ddply(dat1,.(name),summarize,Sum_Number=sum(number)) # name Sum_Number #1 a 5 #2 b 12 #3 c 10 #or library(data.table) dt1<- data.table(dat1) dt1[,list(Sum_Number=sum(number)),by=name] # name Sum_Number #1: a 5 #2: b 12 #3: c 10 ##Speed comparison: set.seed(1254) name<- sample(letters,1e6,replace=TRUE) number<- sample(1:10,1e6,replace=TRUE) datTest<- data.frame(name,number,stringsAsFactors=FALSE) system.time(res1<-aggregate(number~name,data=datTest,sum)) # user system elapsed # 2.184 0.000 1.772 system.time(res2<-ddply(datTest,.(name),summarize,Sum_Number=sum(number))) # user system elapsed # 0.256 0.000 0.227 dtTest<- data.table(datTest) system.time(res3<- dtTest[,list(Sum_Number=sum(number)),by=name]) #user system elapsed # 0.084 0.000 0.066 names(res1)[2]<- names(res2)[2] identical(res1,res2) #[1] TRUE res3New<- res3[order(name),] identical(res1,as.data.frame(res3New)) #[1] TRUE #to get descriptive statistics by(dat1[,2],dat1[,1],summary) #or library(psych) describeBy(dat1[,2],dat1[,1],mat=TRUE) A.K. Hello. I have a big table and need to have descriptive statistics by sub-groups of data. For example: name number a 2 a 3 b 5 b 7 c 9 c 1 How can I get/print a table that show the sum of numbers for each name? a = 5 b = 12 c = 10 Thank you!!! ______________________________________________ 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.