Clasificación de arreglos en programación R

Requisito previo: R – Array

Un vector es una array unidimensional, que se especifica mediante una sola dimensión, la longitud. Se puede crear un vector usando la función ‘ c() ‘. Se pasa una lista de valores a la función c() para crear un vector. La clasificación se puede hacer en orden ascendente o descendente. Hay algunas cosas que deben tenerse en cuenta antes de clasificar. Son los siguientes:

  • Orden en el que se debe realizar la clasificación: Ascendente/Descendente.
  • Clasificación según criterios de varias columnas.
  • Manejo de valores perdidos y duplicados durante la clasificación. El analista debe decidir qué se debe hacer con los valores faltantes y duplicados. Se debe considerar el impacto general en los datos antes de eliminar o reemplazar valores nulos.

Método 1: función sort()

La función sort() en R se usa para ordenar un vector. Por defecto, ordena un vector en orden creciente . Para clasificar en orden descendente, agregue unparámetro » decreciente » a la función de clasificación.

Sintaxis:

sort(nombre_de_vector, decreciente = VERDADERO)

Parámetros:

name_of_vector: Vector a ordenar

decreciente: valor booleano para ordenar en orden descendente

Ejemplo 1:

R

# create a linear array
arr <- c(9, 8, 7, 6, 5, 4, 3, 2, 1)
 
# use of sort function to sort array
# by default it is sorted in increasing order
sort(arr)

Producción:

[1] 1 2 3 4 5 6 7 8 9

Ejemplo 2:

R

# create linear array
arr <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
 
# use in built sort function
# to sort in decreasing order
sort(arr, decreasing = TRUE)

Producción:

[1] 9 8 7 6 5 4 3 2 1

Nota: El principal inconveniente de la función sort() es que no puede ordenar marcos de datos.

Método 2: función order()

Para superar el inconveniente del método 1, usamos la función order() , que también ordena los marcos de datos según la columna especificada. Para ordenar en orden decreciente agregue el signo negativo. Los datos también se pueden ordenar con múltiples criterios. Supongamos que si la edad de dos personas es la misma, podemos clasificarlas en función de sus nombres, es decir, lexicográficamente. Vea los siguientes ejemplos.

Ejemplo 1:

R

# define dataframe
df <- data.frame("Age" = c(12, 21, 15, 5, 25),
                 "Name" = c("Johnny", "Glen", "Alfie",
                            "Jack", "Finch"))
 
# sort the dataframe on the basis of
# age column and store it in newdf
newdf <- df[order(df$Age), ]
 
# print sorted dataframe
print(newdf)

Producción:

   Age  Name
4  5    Jack
1  12   Johnny
3  15   Alfie
2  21   Glen
5  25   Finch

Ejemplo 2:

R

# define vector
r = c(10, 20, 30, 40, 50, 60)
 
# sort in decreasing order
order(-r)

Producción:

[1] 6 5 4 3 2 1

Ejemplo 3:

R

# define dataframe
df <- data.frame("Age" = c(12, 21, 15, 12, 25, 12),
                 "Name" = c("Johnny", "Glen", "Alfie",
                            "Jack", "Finch", "Aaron"))
 
# sort the dataframe first on the basis of
# Age and if age is same perform sort on Name
newdf <- df[order(df$Age, df$Name), ]
 
# print sorted dataframe
print(newdf)

Producción:

  Age   Name
6  12   Aaron
4  12   Jack
1  12   Johnny
3  15   Alfie
2  21   Glen
5  25   Finch

Nota: La salida anterior son los índices de los números. Por ejemplo, 60 es el vector más grande y tiene un índice 6. Por lo tanto, 6 se muestra primero. 

Método 3: ordenar la array usando el ciclo

  • Crear una array lineal, digamos arr
  • Crear un intercambio de variables. Si el intercambio es falso después de atravesar toda la array, significa que la array ya está ordenada y rompe el ciclo
  • De lo contrario, ejecute el bucle y copie la array original en otra array, diga newArr y comience a comparar elementos adyacentes en la array original
  • Si el elemento actual es más pequeño que el elemento anterior, copie el elemento actual de arr en la posición anterior de newArr y el elemento anterior de arr en la posición actual de newArr. El newArr ahora tiene elementos intercambiados.
  • Copie newArr a la array original arr y haga swap = TRUE.
  • Repita hasta que arr esté ordenado

A continuación se muestra la implementación del enfoque anterior.

R

# create linear array
arr <- c(9, 4, 5, 4, 5, 6, 3, 2, 1)
 
# repeat until break is encountered
repeat
{
      # create a variable swap
    swap = FALSE
   
      # run loop from 2nd element till last element
    for (i in 2:length(arr))
    {
          # copy original array into newArr
        newArr <- arr
        if (arr[i - 1] > arr[i])
        {
            newArr[i - 1] <- arr[i]
            newArr[i] <- arr[i - 1]
            arr <- newArr
            swapped <- TRUE
        }
    }
    if (!swapped) {break}
}
print(arr)

Producción:

[1] 1 2 3 4 4 5 5 6 9

Método 4: El uso del paquete dplyr

El paquete dplyr es fácil de usar y confiable. El paquete incluye el método Organize() para ordenar los datos. Vea los siguientes ejemplos.

Ejemplo 1:

R

# install package dplyr
install.packages("dplyr")
 
# import library dplyr
library(dplyr)
 
# create dataframe
df <- data.frame("Age" = c(12, 21, 15, 5, 25),
                 "Name" = c("Johnny", "Glen", "Alfie",
                            "Jack", "Finch"))
 
# sort the dataframe on the basis of
# age column using arrange method
arrange(df,age)

Producción:

   Age  Name
4  5    Jack
1  12   Johnny
3  15   Alfie
2  21   Glen
5  25   Finch

Publicación traducida automáticamente

Artículo escrito por rohanchopra96 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 *