¿Cómo extraer la fila del marco de datos con valores mínimos o máximos en R?

La disposición tabular de filas y columnas para formar un marco de datos en el lenguaje de programación R admite muchas formas de acceder y modificar los datos. La aplicación de consultas y funciones agregadas, como min, max y count, se puede realizar fácilmente sobre los valores de celda del marco de datos. Por lo tanto, es relativamente muy fácil acceder a un subconjunto del marco de datos en función de los valores contenidos en la celda. 

Ejemplo 1: determinar la fila con el valor mínimo o máximo en función de los valores completos del marco de datos.

Se realiza una iteración sobre las celdas del marco de datos, utilizando dos bucles para cada fila y columna del marco de datos, respectivamente. El valor de la celda se compara con los valores inicial mínimo y máximo respectivamente y se actualiza en caso de que el valor satisfaga la restricción. Además, se declara una variable para mantener el índice de fila actual cumpliendo la condición. Luego, se accede a la fila en este índice del marco de datos. La complejidad del tiempo es polinomial con respecto al tamaño del marco de datos. 

R

# declaring a data frame in R
data_frame = data.frame(C1 = c(5:8),
                        C2 = c(1:4),
                        C3 = c(9:12),
                        C4 = c(13:16))
  
print("Original data frame")
print(data_frame)
  
# declaring initial values for min and max
min = 32767
max = -32767
min_row_indx = 0
max_row_indx = 0
  
# looping over the data frame values
for (i in 1:nrow(data_frame)){
    
# for-loop over columns
for(j in 1:ncol(data_frame)) {   
    
        # checking if the dataframe
          # cell value is less than minimum
        if(data_frame[i,j]<min){
            
               # replacing the minimum
              # with the smaller value
            min = data_frame[i,j]
            
            # updating the row with the
              # smallest value found uptil now
            min_row_indx = i
        }
    
        # checking if the data frame
          # cell value is more than maximum
        if(data_frame[i,j]>max){
            
              # replacing the minimum
            # with the smaller value
            max = data_frame[i,j]
            
            # updating the row with the
              # smallest value found uptil now
            max_row_indx = i
        }
    }
}
# printing the row with minimum value
print ("Row with minimum value in the data frame")
print (data_frame[min_row_indx,])
  
# printing the row with maximum value
print ("Row with maximum value in the data frame")
print (data_frame[max_row_indx,])

Producción:

[1] "Original data frame"
 C1 C2 C3 C4
1  5  1  9 13
2  6  2 10 14
3  7  3 11 15
4  8  4 12 16
[1] "Row with minimum value in the data frame"
 C1 C2 C3 C4
1  5  1  9 13
[1] "Row with maximum value in the data frame"
 C1 C2 C3 C4
4  8  4 12 16

Ejemplo 2: Determinación de la fila con valor mínimo o máximo en función de una columna de marco de datos

La función which.min() en R se puede usar para calcular el mínimo de todos los valores en el objeto especificado como argumento, ya sea una lista, una array o un marco de datos. De manera similar, which.max() calcula el mayor de todos los valores. Para seleccionar una columna particular del marco de datos, usamos df$colname y luego aplicamos esto como un índice del marco de datos para extraer la fila completa con la función agregada especificada. Este enfoque se puede aplicar a todos los tipos de datos, numéricos, strings y factores. La complejidad de tiempo requerida es lineal con respecto a la longitud de la columna, ya que accedemos y comparamos directamente todos los valores de esta columna en particular. 

La siguiente sintaxis en R se usa para extraer la fila con el valor mínimo o máximo en la columna especificada en el argumento: 

Sintaxis: df[cuál.min(df$nombrecol),]

Argumentos: 

  • df – Data Frame para extraer el valor mínimo o máximo de
  • colname: nombre de columna para considerar calcular el mínimo o el máximo.

Devuelve: la fila con el valor de celda máximo o mínimo en la columna en particular. 

Código:

R

# declaring a data frame in R
data_frame = data.frame(C1 = c(1:4),
                        C2 = c( 5:8),
                        C3 = c(9:12),
                        C4 = c(13:16))
  
print("Original data frame")
print(data_frame)
  
# extracting the row with
# maximum value in C2 column
print ("Row with max C2 value")
data_frame[which.max(data_frame$C2),]
  
# extracting the row with 
# minimum value in C4 column
print ("Row with min C4 value")
data_frame[which.min(data_frame$C4),]

Producción:

[1] "Original data frame"
 C1 C2 C3 C4
1  1  5  9 13
2  2  6 10 14
3  3  7 11 15
4  4  8 12 16
[1] "Row with max C2 value"
 C1 C2 C3 C4
4  4  8 12 16
[1] "Row with min C4 value"
 C1 C2 C3 C4
1  1  5  9 13

En caso de que el marco de datos contenga valores variables de tipo string, el mínimo y el máximo se calculan al clasificar estos datos lexicográficamente. 

R

# declaring a data frame in R
data_frame = data.frame(C1= c("a","b","c","d"),
                        C2= c("geeks","dataframe","in","R"),
                        C3= c(9:12),C4=c(13:16))
  
print("Original data frame")
print(data_frame)
  
# extracting the row with maximum value in 
# C2 column
print ("Row with max C1 value")
data_frame[which.max(data_frame$C1),]
  
# extracting the row with minimum value in 
# C4 column
print ("Row with min C2 value")
data_frame[which.min(data_frame$C2),]

Producción

[1] "Original data frame"
 C1        C2 C3 C4
1  a     geeks  9 13
2  b dataframe 10 14
3  c        in 11 15
4  d         R 12 16
[1] "Row with max C1 value"
 C1 C2 C3 C4
4  d  R 12 16
[1] "Row with min C2 value"
 C1        C2 C3 C4
2  b dataframe 10 14

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 *