Summary for mode of a data set
You are correct that my function is also wrong. You need to decide what you want and write a function to do that, if you don't have it already. Best Wishes, Spencer Graves
Ravi Varadhan wrote:
Dear Spencer: In the following example, your code doesn't pick up the local mode at 5.
x2 <- c(1,1,2,3,3,3,3,5,5,5) modes(x2)
[1] 1 3 In this example, it gives a mode at 7, which is incorrect.
x2 <- c(1,1,2,3,3,3,3,5,5,5,6,7) modes(x2)
[1] 1 3 7 Ravi. ----- Original Message ----- From: Spencer Graves <spencer.graves at pdf.com> Date: Monday, June 23, 2003 2:53 pm Subject: Re: [R] Summary for mode of a data set
Your "mode1" function will identify multiple modes only if they have the same number of observations. Consider the following:
x2 <- c(2, 1,1, 3,3,3) mode1(x2)
[1] 3
Here, "mode1" did not identify the local mode at 1, because it had
fewer
observations than 3. If you want the modes at both 1 and 3, then
consider the following:
modes <- function(x){
xt <- table(x)
nt <- length(xt)
sel <- c(xt[-nt]>=xt[-1], T)&c(T, xt[-1]>=xt[-nt])
as.numeric(names(xt[sel]))
}
modes(x2)
[1] 1 3 hth. spencer graves Erin Hodgess wrote:
Dear R People: thank you for the many helpful sets of code that I received!!! I combined several of the concepts for the following function:
mode1
function(x) {
y <- rle(sort(x))
z <- y$values[y$lengths==max(y$lengths)]
return(z)
}
xm
[1] 22 15 10 30 25 26 2 17 28 2 24 6 26 24 5 22 20 14
mode1(xm)
[1] 2 22 24 26 This will pick up multiple modes. Again thanks to all who helped! Sincerely, Erin mailto: hodgess at uhddx.01.dt.uh.edu
______________________________________________ R-help at stat.math.ethz.ch mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help
______________________________________________ R-help at stat.math.ethz.ch mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help