Try this: > tmp <- sample( 100, 50 ) > > tmp2 <- rev( sort(tmp) ) > > tmp3 <- cumsum(tmp2) <= sum(tmp)/2 > > sum(tmp3) # number needed [1] 14 > > tmp2[ sum(tmp3) ] # the smallest value [1] 78 > > sum(tmp2[tmp3]) / sum(tmp) # check [1] 0.4894614 > sum(tmp2[ 1:(sum(tmp3)+1) ]) / sum(tmp) [1] 0.519516
Hope this helps, -- Gregory (Greg) L. Snow Ph.D. Statistical Data Center Intermountain Healthcare [EMAIL PROTECTED] 801.408.8111 > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > project.org] On Behalf Of Jeremy Leipzig > Sent: Tuesday, November 25, 2008 10:45 AM > To: r-help@r-project.org > Subject: Re: [R] calculating an N50 > > > Given a set of integers of different values how do I calculate the > > minimum number of the largest of integers that are required, when > > summed, to equal 50% of the total sum of the the set? > > > Actually I need the value of the smallest member such that the > sum of all members equal or greater to that is 50% of the total sum of > the set > > ______________________________________________ > 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.