Encontrar el modo de un vector en R

Jinku Hu 30 enero 2023
  1. Utilice la función personalizada para buscar el modo de un vector R
  2. Utilice map_dbl para aplicar la función FindMode a cada columna de DataFrame en R
Encontrar el modo de un vector 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
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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