¿Cómo calcular el modo de todas las filas o columnas de un marco de datos en R?

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

Publicación traducida automáticamente

Artículo escrito por yippeee25 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *