[R] Binning groups

David Winsemius dwinsemius at comcast.net
Sun May 25 01:01:45 CEST 2008


> On Thu, 22 May 2008, francogrex wrote:
> 
> Hi, this is probably quite simple but I can't seem to do it 
correctly. I
> have
> a data frame of counts of infections in different ages; something 
like:
> count=c(1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 7, 8, 8, 9, 9,
> 10, 11, 15, 17, 17, 17, 17, 19, 19, 19, 19, 20, 20, 20, 21, 21,
> 21, 22, 22, 22, 22, 23, 23, 23, 23, 23, 24, 24, 25, 27, 31, 33
> )
> age=c(3, 8, 9, 7, 56, 58, 10, 13, 53, 55, 11, 12, 14, 51, 54,
> 15, 50, 52, 18, 49, 48, 47, 20, 16, 17, 25, 45, 29, 33, 36, 41,
> 35, 43, 46, 21, 27, 31, 28, 32, 38, 42, 22, 34, 37, 40, 44, 24,
> 39, 30, 26, 19, 23)
>
> frame=data.frame(count, age)
>
> But the data are too grainy and I would like to bin them in age 
groups
> (that
> I chose) to be something like:
> age<10 ...... count=5
> 10=<age <20 ..... count=8
> etc...
> What is the easiest and quickest way to do this? Thanks
-------------
Anne York <york at zipcon.net> wrote: 
  
> One method is to define a new variable, say age.cut and then 
> to table it:
> 
> 
> frame$age.cut = cutframe$age, c(0,11,20,35,60),right=FALSE)

# Scratched my head wondering if I neede to learn a new function.
# Pretty sure you meant to type:

frame$age.cut = cut(frame$age, c(0,11,20,35,60), right=FALSE)

> #check frame$age.cut to see that boundaries are really as 
> #you wanted them
> frame$age.cut
> 
> table(frame$age.cut)
 [0,11) [11,20) [20,35) [35,60) 
      5       9      15      23 

# But that did not use the count variable. Only counted categories.
# Try instead:

 table(rep(frame$age.cut, count))
 [0,11) [11,20) [20,35) [35,60) 
      8      96     332     316 

-- 
David Winsemius



More information about the R-help mailing list