Hi, May be this helps: dat1<-read.table(text=" Trip_id Vessel CommonName Length Count 1 230 Sunlight ShadAmerican 19 1 2 230 Sunlight ShadAmerican 20 1 3 230 Sunlight ShadAmerican 21 1 4 230 Sunlight ShadAmerican 23 1 5 230 Sunlight ShadAmerican 26 1 6 230 Sunlight ShadAmerican 27 1 7 230 Sunlight ShadAmerican 30 2 8 230 Sunlight ShadAmerican 33 1 9 230 Sunlight ShadAmerican 34 1 10 230 Sunlight ShadAmerican 37 1 11 230 Sunlight HerringBlueback 20 1 12 230 Sunlight HerringBlueback 21 2 13 230 Sunlight HerringBlueback 22 5 14 230 Sunlight HerringBlueback 26 1 15 230 Sunlight Alewife 17 1 16 230 Sunlight Alewife 18 1 17 230 Sunlight Alewife 20 2 18 230 Sunlight Alewife 21 4 19 230 Sunlight Alewife 22 16 20 230 Sunlight Alewife 23 22 21 230 Sunlight Alewife 24 16 22 230 Sunlight Alewife 25 4 23 230 Sunlight Alewife 26 1 24 230 Sunlight Alewife 27 2 25 230 Sunlight Alewife 28 2 26 231 Western_Venture ShadAmerican 23 1 27 231 Western_Venture ShadAmerican 24 1 28 231 Western_Venture ShadAmerican 25 1 29 231 Western_Venture ShadAmerican 28 2 30 231 Western_Venture ShadAmerican 29 2 ",sep="",header=TRUE,stringsAsFactors=FALSE)
with(dat1,aggregate(Count,by=list(Trip_id=Trip_id,Species=CommonName),function(x) x/sum(x))) Trip_id Species 1 230 Alewife 2 230 HerringBlueback 3 230 ShadAmerican 4 231 ShadAmerican x #1 0.01408451, 0.01408451, 0.02816901, 0.05633803, 0.22535211, 0.30985915, 0.22535211, 0.05633803, 0.01408451, 0.02816901, 0.02816901 #2 0.1111111, 0.2222222, 0.5555556, 0.1111111 #3 0.09090909, 0.09090909, 0.09090909, 0.09090909, 0.09090909, 0.09090909, 0.18181818, 0.09090909, 0.09090909, 0.09090909 #4 0.1428571, 0.1428571, 0.1428571, 0.2857143, 0.2857143 #or library(plyr) res<-ddply(dat1,.(Trip_id=Trip_id,Vessel=Vessel,CommonName=CommonName), summarize, Count/sum(Count)) colnames(res)[4]<-"value" head(res) # Trip_id Vessel CommonName value #1 230 Sunlight Alewife 0.01408451 #2 230 Sunlight Alewife 0.01408451 #3 230 Sunlight Alewife 0.02816901 #4 230 Sunlight Alewife 0.05633803 #5 230 Sunlight Alewife 0.22535211 #6 230 Sunlight Alewife 0.30985915 A.K. ----- Original Message ----- From: Sally_roman <sro...@umassd.edu> To: r-help@r-project.org Cc: Sent: Thursday, October 25, 2012 10:19 AM Subject: [R] trying ti use a function in aggregate Hi -I am using R v 2.13.0. I am trying to use the aggregate function to calculate the percent at length for each Trip_id and CommonName. Here is a small subset of the data. Trip_id Vessel CommonName Length Count 1 230 Sunlight Shad,American 19 1 2 230 Sunlight Shad,American 20 1 3 230 Sunlight Shad,American 21 1 4 230 Sunlight Shad,American 23 1 5 230 Sunlight Shad,American 26 1 6 230 Sunlight Shad,American 27 1 7 230 Sunlight Shad,American 30 2 8 230 Sunlight Shad,American 33 1 9 230 Sunlight Shad,American 34 1 10 230 Sunlight Shad,American 37 1 11 230 Sunlight Herring,Blueback 20 1 12 230 Sunlight Herring,Blueback 21 2 13 230 Sunlight Herring,Blueback 22 5 14 230 Sunlight Herring,Blueback 26 1 15 230 Sunlight Alewife 17 1 16 230 Sunlight Alewife 18 1 17 230 Sunlight Alewife 20 2 18 230 Sunlight Alewife 21 4 19 230 Sunlight Alewife 22 16 20 230 Sunlight Alewife 23 22 21 230 Sunlight Alewife 24 16 22 230 Sunlight Alewife 25 4 23 230 Sunlight Alewife 26 1 24 230 Sunlight Alewife 27 2 25 230 Sunlight Alewife 28 2 26 231 Western Venture Shad,American 23 1 27 231 Western Venture Shad,American 24 1 28 231 Western Venture Shad,American 25 1 29 231 Western Venture Shad,American 28 2 30 231 Western Venture Shad,American 29 2 My code is: myfun<-function (x) x/sum(x) b<-with(data,aggregate(x=list(Percent=Count),by=list(Trip_id=Trip_id,Length=Length,Species=CommonName), FUN="myfun")) My issue is that the percent is not be calculated by Trip_id and CommonName. The result is that each row has a percent of 1 indicating that myfun is not dividing by the sum of counts with a Trip_id/CommonName group. Any help would be appreciated. Thank you -- View this message in context: http://r.789695.n4.nabble.com/trying-ti-use-a-function-in-aggregate-tp4647414.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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. ______________________________________________ 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.