En este artículo, discutiremos cómo calcular el modo de todas las filas y columnas de un marco de datos en el lenguaje de programación R.
Método 1: Usar el paquete DescTools
El paquete DescTools en R se utiliza para realizar análisis descriptivos. Contiene una colección de funciones estadísticas básicas misceláneas y contenedores de conveniencia para describir datos de manera eficiente. Se puede instalar en el espacio de trabajo R usando la siguiente sintaxis:
install.packages("DescTools")
El método mode() de este paquete se usa para devolver el valor numérico o de carácter que ocurre con más frecuencia desde el vector de entrada.
Sintaxis: Modo (vec, na.rm = FALSO)
Argumentos:
vec: un vector numérico (no vacío) de valores.
na.rm (Predeterminado: falso): indicador de si se deben eliminar los valores faltantes.
En este enfoque, se inicia un ciclo for para iterar sobre todas las columnas, y luego cada columna individual se proporciona como un vector individual en el método Mode().
Código:
R
library ("DescTools") # declaring a dataframe data_frame = data.frame(col1 = c("b", "b", "d", "e", "e") , col2 = c(0, 2, 1, 2, 5), col3= c(TRUE, FALSE, FALSE, TRUE, TRUE)) print ("Original dataframe") print (data_frame) print ("Mode of columns \n") # iterating over all the columns of the # dataframe for (i in 1:ncol(data_frame)){ # calculating mode of ith column mod_val <- Mode(data_frame[,i]) cat(i, ": ",mod_val,"\n") }
Producción:
[1] "Original dataframe" col1 col2 col3 1 b 0 TRUE 2 b 2 FALSE 3 d 1 FALSE 4 e 2 TRUE 5 e 5 TRUE [1] "Mode of columns" 1 : 1 3 2 : 2 3 : TRUE
En el ejemplo anterior, el equivalente numérico de col1 se devuelve a los valores de modo. Esto conduce a la ambigüedad o la pérdida de datos. Para eliminar este problema, se puede realizar la conversión explícita a as.character().
R
library ("DescTools") # declaring a dataframe data_frame = data.frame(col1 = c("b","b","d","e","e") , col2 = c(0,2,1,2,5), col3= c(TRUE,FALSE,FALSE,TRUE, TRUE)) print ("Original dataframe") print (data_frame) print ("Mode of columns \n") # iterating over all the columns # of the dataframe for (i in 1:ncol(data_frame)){ # calculating mode of ith column mod_val <- as.character(Mode(data_frame[,i])) cat(i, ": ",mod_val,"\n") }
Producción:
[1] "Original dataframe" col1 col2 col3 1 b 0 TRUE 2 b 2 FALSE 3 d 1 FALSE 4 e 2 TRUE 5 e 5 TRUE [1] "Mode of columns" 1 : b e 2 : 2 3 : TRUE
Método 2: método definido por el usuario
Se realiza una iteración de bucle for sobre todas las columnas del marco de datos. El modo se puede calcular utilizando la función definida por el usuario mediante los siguientes pasos:
Paso 1: Calcule los valores únicos del vector usando el método unique() en R. Devuelve los valores únicos del vector.
Paso 2: se llama al método Match para devolver un vector de las posiciones de las (primeras) coincidencias de su primer argumento especificado en su segundo argumento. El primer vector es el vector columna original y el segundo es el vector único.
match (col , unique_vec)
Paso 3: Luego se invoca el método tabulate(), que toma como entrada el vector de valor entero coincidente y cuenta el número de ocurrencias de cada entero en el vector especificado.
Paso 4: El valor máximo de estos valores tabulados luego se calcula utilizando el método max(), que luego se devuelve como el modo de la columna.
Código:
R
# create function to compute mode mode <- function(x) { # function to compute unique values # in vector unq_data <- unique(x) # map values to its number of occurrences map_data <- match(x, unq_data) # table of the data with its values tabulate_data <- tabulate(map_data) # compute maximum value from data max_val <- max(tabulate_data) # plot it form table unq_data[tabulate_data == max_val] } # declaring a dataframe data_frame = data.frame(col1 = c("b","b","d","e","e") , col2 = c(0,2,1,2,5), col3= c(TRUE,FALSE,FALSE,TRUE, TRUE)) print ("Original dataframe") print (data_frame) print ("Mode of columns \n") # iterating over all the columns of # the dataframe for (i in 1:ncol(data_frame)){ # calculating mode of ith column mod_val <- mode(data_frame[,i]) print (mod_val) }
Producción:
[1] "Original dataframe" col1 col2 col3 1 b 0 TRUE 2 b 2 FALSE 3 d 1 FALSE 4 e 2 TRUE 5 e 5 TRUE [1] "Mode of columns" [1] b e Levels: b d e [1] 2 [1] TRUE