[R] Mode (statistics) in R?

0 views
Skip to first unread message

Jason Rupert

unread,
Jan 26, 2009, 8:28:34 AM1/26/09
to r-h...@r-project.org
Hopefully this is a pretty simple question:
 
Is there a function in R that calculates the "mode" of a sample?   That is, I would like to be able to determine the value that occurs the most frequently in a data set.
 
I tried the default R "mode" function, but it appears to provide a storage type or something else. 
 
I tried the RSeek and some R documentation that I downloaded, but nothing seems to mention calculating the "mode".
 
Thanks again.
 
 



[[alternative HTML version deleted]]

Carlos J. Gil Bellosta

unread,
Jan 26, 2009, 8:34:00 AM1/26/09
to jasonk...@yahoo.com, r-h...@r-project.org
Hello,

You can try ?table.

Best regards,

Carlos J. Gil Bellosta
http://www.datanaytics.com

> ______________________________________________
> R-h...@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-h...@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.

Mike Lawrence

unread,
Jan 26, 2009, 8:39:18 AM1/26/09
to jasonk...@yahoo.com, r-h...@r-project.org
Here's a rather convoluted way of finding the mode (or, at least, the
first mode):

x = round(rnorm(100,sd=5))
my_mode = as.numeric(names(table(x))[which.max(table(x))])

> ______________________________________________
> R-h...@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.
>
>

--
Mike Lawrence
Graduate Student
Department of Psychology
Dalhousie University
www.thatmike.com

Looking to arrange a meeting? Check my public calendar:
http://www.thatmike.com/mikes-public-calendar

~ Certainty is folly... I think. ~

Jason Rupert

unread,
Jan 26, 2009, 8:54:07 AM1/26/09
to r-h...@r-project.org
Thanks.
 
I ended up breaking it up into two steps:
 
table_data<-table(data)
subset(table_data, table_data==max(table_data))
 
Thanks again.


--- On Mon, 1/26/09, Mike Lawrence <mi...@thatmike.com> wrote:


[[alternative HTML version deleted]]

Marc Schwartz

unread,
Jan 26, 2009, 9:00:50 AM1/26/09
to jasonk...@yahoo.com, r-h...@r-project.org

It depends upon the type of data you are dealing with.

If it is discrete, you can use table() to calculate frequencies and then
take the max:

set.seed(1)

tl <- table(sample(letters, 100, replace = TRUE))

> tl

a b c d e f g h i j k l m n o p q r s t u v w x y z
2 3 3 3 2 4 6 1 6 5 6 4 7 2 2 2 5 4 5 3 8 4 5 4 3 1

> tl[which.max(tl)]
u
8


Alternatively, if the data is continuous, then you will need to look at
some form of density estimation. There have been various discussions
over the years on how to go about doing this, but a simplistic approach
would be:

set.seed(1)

x <- rnorm(100)

dx <- density(x)

> dx$x[which.max(dx$y)]
[1] 0.3294585


# Review plot
plot(dx)
abline(v = dx$x[which.max(dx$y)])


See ?table, ?which.max and ?density

HTH,

Marc Schwartz

patricia garcía gonzález

unread,
Jan 26, 2009, 9:52:39 AM1/26/09
to c...@datanalytics.com, jasonk...@yahoo.com, r-h...@r-project.org

Hello,

I think this will work:

names( sort( -table( x ) ) )[1]

Regards

Patricia García

> From: c...@datanalytics.com> To: jasonk...@yahoo.com> Date: Mon, 26 Jan 2009 18:34:00 +0500> CC: r-h...@r-project.org> Subject: Re: [R] Mode (statistics) in R?> > Hello,> > You can try ?table. > > Best regards,> > Carlos J. Gil Bellosta> http://www.datanaytics.com> > On Mon, 2009-01-26 at 05:28 -0800, Jason Rupert wrote:> > Hopefully this is a pretty simple question:> > > > Is there a function in R that calculates the "mode" of a sample? That is, I would like to be able to determine the value that occurs the most frequently in a data set. > > > > I tried the default R "mode" function, but it appears to provide a storage type or something else. > > > > I tried the RSeek and some R documentation that I downloaded, but nothing seems to mention calculating the "mode". > > > > Thanks again.> > > > > > > > > > > > [[alternative HTML version deleted]]> > > > ______________________________________________> > R-h...@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-h...@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.
_________________________________________________________________


[[alternative HTML version deleted]]

Reply all
Reply to author
Forward
0 new messages