Hi, This is a simple problem, but for the life of me I cannot find the answer. How to determine frequency within given ranges ? I know that table() gives frequency, for example a <- table(numbers)> anumbers 4 5 23 34 43 54 56 65 67 324 435 453 456 567 657 2 1 2 2 1 1 2 1 2 1 3 1 1 1 1> as.data.frame(table(numbers))numbers Freq 1 4 2 2 5 1 3 23 2 4 34 2 ... However, there must be some simple way to get the frequency based on ranges, such as 0-10, 10-20, 20-30 and so on. Please help ! Thank you. Cheers, Chintanu [[alternative HTML version deleted]]
R. Michael Weylandt <michael.weylandt@gmail.com>
2012-Jul-27 01:44 UTC
[R] Counting frequency within each range
Combine cut() and table() Michael On Jul 26, 2012, at 8:22 PM, Chintanu <chintanu at gmail.com> wrote:> Hi, > > This is a simple problem, but for the life of me I cannot find the answer. > How to determine frequency within given ranges ? > I know that table() gives frequency, for example > > a <- table(numbers) >> a > numbers > 4 5 23 34 43 54 56 65 67 324 435 453 456 567 657 > 2 1 2 2 1 1 2 1 2 1 3 1 1 1 1 > >> as.data.frame(table(numbers)) > numbers Freq > 1 4 2 > 2 5 1 > 3 23 2 > 4 34 2 > ... > > However, there must be some simple way to get the frequency based on > ranges, such as 0-10, 10-20, 20-30 and so on. > Please help ! > > Thank you. > > Cheers, > Chintanu > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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.
table(cut(numbers, c(0, 10, 20, 30, . . .), include.lowest=TRUE)) ---------------------------------------------- David L Carlson Associate Professor of Anthropology Texas A&M University College Station, TX 77843-4352> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r- > project.org] On Behalf Of Chintanu > Sent: Thursday, July 26, 2012 8:23 PM > To: r-help at r-project.org > Subject: [R] Counting frequency within each range > > Hi, > > This is a simple problem, but for the life of me I cannot find the > answer. > How to determine frequency within given ranges ? > I know that table() gives frequency, for example > > a <- table(numbers) > > a > numbers > 4 5 23 34 43 54 56 65 67 324 435 453 456 567 657 > 2 1 2 2 1 1 2 1 2 1 3 1 1 1 > 1 > > > as.data.frame(table(numbers)) > numbers Freq > 1 4 2 > 2 5 1 > 3 23 2 > 4 34 2 > ... > > However, there must be some simple way to get the frequency based on > ranges, such as 0-10, 10-20, 20-30 and so on. > Please help ! > > Thank you. > > Cheers, > Chintanu > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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.
Hi, Try this:a<-c(4,5,23,34,43,54,56,65,67,324,435,453,456,567,657) a1<-melt(table(cut(a,breaks=c(0,10,20,30,60,120,240,480,960)))) a2<-data.frame(sapply(a1,function(x) gsub("\\(|\\]","",gsub("\\,","-",x)))) colnames(a2)<-c("numbers","Freq") a2 #? numbers Freq #1??? 0-10??? 2 #2?? 10-20??? 0 #3?? 20-30??? 1 #4?? 30-60??? 4 #5? 60-120??? 2 #6 120-240??? 0 #7 240-480??? 4 #8 480-960??? 2 #You can also get the same result by: a1<-as.data.frame(table(cut(a,breaks=c(0,10,20,30,60,120,240,480,960),labels=c("0-10","10-20","20-30","30-60","60-120","120-240","240-480","480-960"))) ) colnames(a1)<-c("numbers","Freq") ?a1 A.K. ----- Original Message ----- From: Chintanu <chintanu at gmail.com> To: r-help at r-project.org Cc: Sent: Thursday, July 26, 2012 9:22 PM Subject: [R] Counting frequency within each range Hi, This is a simple problem, but for the life of me I cannot find the answer. How to determine frequency within given ranges ? I know that table() gives frequency, for example a <- table(numbers)> anumbers ? 4? 5? 23? 34? 43? 54? 56? 65? 67 324 435 453 456 567 657 ? 2? 1? 2? 2? ? 1? 1? ? 2? 1? ? 2? ? 1? ? 3? ? 1? ? ? 1? 1? 1> as.data.frame(table(numbers))? numbers Freq 1? ? ? ? 4? ? 2 2? ? ? ? 5? ? 1 3? ? ? 23? ? 2 4? ? ? 34? ? 2 ... However, there must be some simple way to get the frequency based on ranges, such as 0-10, 10-20, 20-30 and so on. Please help ! Thank you. Cheers, Chintanu ??? [[alternative HTML version deleted]] ______________________________________________ R-help at 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.