Quantcast

calculating the mode in R...

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

calculating the mode in R...

Fernando Marmolejo-Ramos
Dear R users

I’m aware that the package “modest” is useful to find the mode in an array.

However, I’d like to know if someone has translated the “mode” function built-in
in MATLAB into R language. This function finds the most frequent value in an
array (http://www.mathworks.com/help/techdoc/ref/mode.html).

Best

Fer

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: calculating the mode in R...

Rainer M Krug-6
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 30/03/11 02:47, Fernando Marmolejo Ramos wrote:
> Dear R users
>
> I?m aware that the package ?modest? is useful to find the mode in an array.
>
> However, I?d like to know if someone has translated the ?mode? function built-in
> in MATLAB into R language. This function finds the most frequent value in an
> array (http://www.mathworks.com/help/techdoc/ref/mode.html).

This sounds like a combination of the table() which tabulates your data,
and the max() function to identify the max - but then you have to
specify what to do when two values have the same count.

Rainer

>
> Best
>
> Fer
>
> ______________________________________________
> [hidden email] 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.


- --
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
Biology, UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Natural Sciences Building
Office Suite 2039
Stellenbosch University
Main Campus, Merriman Avenue
Stellenbosch
South Africa

Tel:        +33 - (0)9 53 10 27 44
Cell:       +27 - (0)8 39 47 90 42
Fax (SA):   +27 - (0)8 65 16 27 82
Fax (D) :   +49 - (0)3 21 21 25 22 44
Fax (FR):   +33 - (0)9 58 10 27 44
email:      [hidden email]

Skype:      RMkrug
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk2S6TIACgkQoYgNqgF2ego48ACdHfCL+BdGA6wZ4bHrjq2wCXJW
vIoAnREiHFeSbJy9vYQPEnRhpV6nLbNB
=suk2
-----END PGP SIGNATURE-----

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: calculating the mode in R...

Tal Galili
Hello Rainer and Fernando,

Actually, I think this function should involve the which.max (not max):

Here is a tiny function to perform this (with smarter handeling of multiple
modes and giving proper warning in such cases)
The.mode <- function(x, show_all_modes = F)
{
 x_freq <- table(x)
 mode_location <- which.max(x_freq)
 The_mode <- names(x_freq)[mode_location]
 Number_of_modes <- length(mode_location)
 #
 if(show_all_modes) {
  if(Number_of_modes >1) {
   warning(paste("Multiple modes exist - returning all",Number_of_modes,"of
them"))}
  return(The_mode)
 } else {
  if(Number_of_modes >1) {
   warning(paste("Multiple modes exist - returning only the first one out
of", Number_of_modes))}
  return(The_mode[1])
 }
}


Cheers,
Tal

----------------Contact
Details:-------------------------------------------------------
Contact me: [hidden email] |  972-52-7275845
Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew) |
www.r-statistics.com (English)
----------------------------------------------------------------------------------------------




On Wed, Mar 30, 2011 at 11:26 AM, Rainer M Krug <[hidden email]> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 30/03/11 02:47, Fernando Marmolejo Ramos wrote:
> > Dear R users
> >
> > I?m aware that the package ?modest? is useful to find the mode in an
> array.
> >
> > However, I?d like to know if someone has translated the ?mode? function
> built-in
> > in MATLAB into R language. This function finds the most frequent value in
> an
> > array (http://www.mathworks.com/help/techdoc/ref/mode.html).
>
> This sounds like a combination of the table() which tabulates your data,
> and the max() function to identify the max - but then you have to
> specify what to do when two values have the same count.
>
> Rainer
>
> >
> > Best
> >
> > Fer
> >
> > ______________________________________________
> > [hidden email] mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
> > and provide commented, minimal, self-contained, reproducible code.
>
>
> - --
> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
> Biology, UCT), Dipl. Phys. (Germany)
>
> Centre of Excellence for Invasion Biology
> Natural Sciences Building
> Office Suite 2039
> Stellenbosch University
> Main Campus, Merriman Avenue
> Stellenbosch
> South Africa
>
> Tel:        +33 - (0)9 53 10 27 44
> Cell:       +27 - (0)8 39 47 90 42
> Fax (SA):   +27 - (0)8 65 16 27 82
> Fax (D) :   +49 - (0)3 21 21 25 22 44
> Fax (FR):   +33 - (0)9 58 10 27 44
> email:      [hidden email]
>
> Skype:      RMkrug
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iEYEARECAAYFAk2S6TIACgkQoYgNqgF2ego48ACdHfCL+BdGA6wZ4bHrjq2wCXJW
> vIoAnREiHFeSbJy9vYQPEnRhpV6nLbNB
> =suk2
> -----END PGP SIGNATURE-----
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
> and provide commented, minimal, self-contained, reproducible code.
>

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: calculating the mode in R...

Rainer M Krug-6
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 30/03/11 10:59, Tal Galili wrote:
> Hello Rainer and Fernando,
>  
> Actually, I think this function should involve the which.max (not max):

Right - was not awarw of which.max - I would have used which(max(...)) -
which.max is much more elegant.

Thanks,

Rainer

>  
> Here is a tiny function to perform this (with smarter handeling of
> multiple modes and giving proper warning in such cases)
> The.mode <- function(x, show_all_modes = F)

It is advisable to use FaALSE instead of F, especially in a function:
you can assign values to F and T, but you can not assign values to FALSE
and TRUE

Cheers,

Rainer

> {
>  x_freq <- table(x)
>  mode_location <- which.max(x_freq)
>  The_mode <- names(x_freq)[mode_location]
>  Number_of_modes <- length(mode_location)
>  #
>  if(show_all_modes) {
>   if(Number_of_modes >1) {
>    warning(paste("Multiple modes exist - returning
> all",Number_of_modes,"of them"))}
>   return(The_mode)
>  } else {
>   if(Number_of_modes >1) {
>    warning(paste("Multiple modes exist - returning only the first one
> out of", Number_of_modes))}  
>   return(The_mode[1])
>  }
> }
>  
>  
> Cheers,
> Tal
>
> ----------------Contact
> Details:-------------------------------------------------------
> Contact me: [hidden email] <mailto:[hidden email]> |
> 972-52-7275845
> Read me: www.talgalili.com <http://www.talgalili.com> (Hebrew) |
> www.biostatistics.co.il <http://www.biostatistics.co.il> (Hebrew) |
> www.r-statistics.com <http://www.r-statistics.com> (English)
> ----------------------------------------------------------------------------------------------
>
>
>
>
> On Wed, Mar 30, 2011 at 11:26 AM, Rainer M Krug <[hidden email]
> <mailto:[hidden email]>> wrote:
>
> On 30/03/11 02:47, Fernando Marmolejo Ramos wrote:
>> Dear R users
>
>> I?m aware that the package ?modest? is useful to find the mode in
> an array.
>
>> However, I?d like to know if someone has translated the ?mode?
> function built-in
>> in MATLAB into R language. This function finds the most frequent
> value in an
>> array (http://www.mathworks.com/help/techdoc/ref/mode.html).
>
> This sounds like a combination of the table() which tabulates your data,
> and the max() function to identify the max - but then you have to
> specify what to do when two values have the same count.
>
> Rainer
>
>
>> Best
>
>> Fer
>
>> ______________________________________________
>> [hidden email] <mailto:[hidden email]> mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> <http://www.r-project.org/posting-guide.html>
>> and provide commented, minimal, self-contained, reproducible code.
>
>

______________________________________________
[hidden email] <mailto:[hidden email]> mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
<http://www.r-project.org/posting-guide.html>
and provide commented, minimal, self-contained, reproducible code.




- --
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
Biology, UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Natural Sciences Building
Office Suite 2039
Stellenbosch University
Main Campus, Merriman Avenue
Stellenbosch
South Africa

Tel:        +33 - (0)9 53 10 27 44
Cell:       +27 - (0)8 39 47 90 42
Fax (SA):   +27 - (0)8 65 16 27 82
Fax (D) :   +49 - (0)3 21 21 25 22 44
Fax (FR):   +33 - (0)9 58 10 27 44
email:      [hidden email]

Skype:      RMkrug
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk2S9ccACgkQoYgNqgF2egqLtQCeM5ntWTHOy2wyk4CbOxwnUfJG
VZUAnRcOpRImBm/AbhsK14O54+pzCP6H
=QW4d
-----END PGP SIGNATURE-----

______________________________________________
[hidden email] 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.
Loading...