[R] working with tables -- was Re: Mode (statistics) in R?

Carl Witthoft carl at witthoft.com
Tue Jan 27 01:50:39 CET 2009


Ok, so I'm slowly figuring out what a factor is, and was able to follow
the related thread about finding a mode by using constructs like

my_mode = as.numeric(names(table(x))[which.max(table(x))])


Now, suppose I want to keep looking for other modes?  For example,

Rgames> sample(seq(1,10),50,replace=TRUE)->bag
Rgames> bag
  [1]  2  8  8 10  7  3  2  9  8  3  8  9  6  6 10 10  7  1
[19]  9  5  4  3  3  5 10  3  6  3  2  8  4  2  1 10  6  2
[37]  6  6  9  8  6  8  8  4  3  6  3  9  5  1
Rgames> names(which.max(table(bag)))
[1] "3"

I can then do

Rgames> bag2<-bag[bag!=3]

and repeat the which.max stuff.
I came up with the following command to find the actual magnitude of the 
mode:

Rgames> table(bag)->tbag
Rgames> tbag
bag
  1  2  3  4  5  6  7  8  9 10
  3  5  8  3  3  8  2  8  5  5

Rgames> tbag[dimnames(tbag)$bag=="3"]->bagmode
Rgames> bagmode
3
8


Related to this, since bag2 is now bereft of threes,
Rgames> table(bag2)
bag2
  1  2  4  5  6  7  8  9 10
  3  5  3  3  8  2  8  5  5

I was able to make the same table with

Rgames> newtable<-tbag[c(dimnames(tbag)$bag)!="3"]
Rgames> newtable
bag
  1  2  4  5  6  7  8  9 10
  3  5  3  3  8  2  8  5  5


Is there a cleaner syntax to do these things?

Thanks for your help--and feel free to point me to the Inferno or other 
paper on the philosophy and use of factors and tables.

Carl




More information about the R-help mailing list