Encontrar el modo de un vector en R
- Utilice la función personalizada para buscar el modo de un vector R
-
Utilice
map_dbl
para aplicar la funciónFindMode
a cada columna de DataFrame en R
Este artículo explicará varios métodos de cómo encontrar un modo de un vector en R.
Utilice la función personalizada para buscar el modo de un vector R
La moda es uno de los conceptos estadísticos más básicos que denota el valor máximo de ocurrencia en un conjunto de valores. Como resultado, se puede observar en diferentes tipos de datos, como numéricos o basados en caracteres. El lenguaje R no tiene una función incorporada para calcular el modo, pero podemos implementarlo usando las funciones: unique
, which.max
, tabulate
y match
. Definimos una función llamada FindMode
que toma un argumento denotado como x
. Al principio, la función unique
se llama en x
y se almacena en un objeto separado. unique
extrae valores no duplicados del conjunto. Puede tomar un objeto vectorial, un DataFrame o un array como primer argumento.
Luego, tenemos múltiples funciones encadenadas que comienzan con match
que toma dos vectores y devuelve un vector de coincidencias de posición a partir de ellos. La función tabulate
cuenta y devuelve el número de veces que aparece cada entero en un vector. Tenga en cuenta que el vector devuelto contiene un recuento para cada número entero que sea menor o igual al número entero máximo en el vector de argumento. Finalmente, la función which.max
encuentra el índice del elemento máximo en el vector entero. Podemos invocar la función FindMode
en cada columna del DataFrame usando la función apply
. En este caso, declaramos un vector entero simple almacenado como un DataFrame y luego pasamos a la función apply
para calcular la media.
library(purrr)
FindMode <- function(x) {
u <- unique(x)
u[which.max(tabulate(match(x, u)))]
}
x <- c(12, 44, 3, -4.2, 3, 3.2, 54, 4, -11, -8, 2.5)
df <- data.frame(x)
apply(df, 2, FindMode)
Producción :
x
3
Alternativamente, podemos llamar a la función FindMode
en el DataFrame directamente. El siguiente código de ejemplo demuestra el uso con el conjunto de datos cars
incluido en el paquete datasets
.
library(purrr)
FindMode <- function(x) {
u <- unique(x)
u[which.max(tabulate(match(x, u)))]
}
apply(cars, 2, FindMode)
Producción :
speed dist
20 26
Utilice map_dbl
para aplicar la función FindMode
a cada columna de DataFrame en R
Otra función útil para encontrar la media de cada columna del DataFrame dado es map_dbl
, que forma parte del paquete purrr
incluido en el tidyverse
. Tenga en cuenta que estos métodos no deben invocarse en los objetos vectoriales.
library(purrr)
FindMode <- function(x) {
u <- unique(x)
u[which.max(tabulate(match(x, u)))]
}
x <- c(12, 44, 3, -4.2, 3, 3.2, 54, 4, -11, -8, 2.5)
df <- data.frame(x)
map_dbl(df, FindMode)
map_dbl(cars, FindMode)
Producción :
x
3
speed dist
20 26
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook