Ordenar datos en R

por | Jun 20, 2018 | R | 8 Comentarios

Ordenar dataframe por una columna

# Cargar datos del dataframe
id <- c(1,2,3,4,5,6,7,8,9)
valor <- c(7,1,12,4,5,16,71,38,19)
categoria <- c(rep("bajo",3),rep("medio",3),rep("alto",3))
datos <- data.frame(id=id, valor=valor, categoria=categoria)
head(datos, n=9)
#   id valor categoria
# 1  1     7      bajo
# 2  2     1      bajo
# 3  3    24      bajo
# 4  4     4     medio
# 5  5     5     medio
# 6  6    16     medio
# 7  7    71      alto
# 8  8    38      alto
# 9  9    19      alto
datos <- datos[with(datos, order(datos$id)), ] # Orden directo 
datos
#  id valor categoria
# 1  2     1      bajo
# 2  4     4     medio
# 3  5     5     medio
# 4  1     7      bajo
# 5  3    12      bajo
# 6  6    16     medio
# 7  9    19      alto
# 8  8    38      alto
# 9  7    71      alto

Ordenar dataframe por una columna en orden inverso

datos <- datos[with(datos, order(-datos$id)), ] # Orden inverso
datos
#   id valor categoria
# 1  7    71      alto
# 2  8    38      alto
# 3  9    19      alto
# 4  6    16     medio
# 5  3    12      bajo
# 6  1     7      bajo
# 7  5     5     medio
# 8  4     4     medio
# 9  2     1      bajo

Ordenar dataframe por una columna (Forma Simple)

#install.packages("dplyr") # Instalar de manipulación de dataframes "dplyr"
library(dplyr) # Cargar la librería de manipulación de dataframes "dplyr"

datos <- arrange(datos, valor) # Orden directo

Ordenar dataframe por una columna en orden inverso (Forma Simple)

library(dplyr) # Cargar la librería de manipulación de dataframes "dplyr"

datos <- arrange(datos, -valor) # Orden inverso

Ordenar un solo vector

vector <- datos$id
vector <-sort(vector, decreasing=FALSE)  # Orden directo
vector
## [1] 1  4  5  7 12 16 19 38 71

Ordenar un solo vector en orden inverso

vector <-sort(vector, decreasing=TRUE) # Orden inverso
vector
## [1] 71 38 19 16 12  7  5  4  1

Sígueme en Youtube - canal Análisis de datos

El código fuente lo podeis encontrar en GitHub:

https://github.com/diegocalvobarreno/ejemplos-en-R/blob/master/Ordenar-datos-en-R.R

8 Comentarios

  1. Guillermo

    Una pequeña corrección: Creo que el comando es arrange, del paquete plyr. Le falta la n a arrage.

    Saludos y muchas gracias por el blog.

    Responder
  2. Diego Calvo

    Muchas gracias por la corrección.

    Responder
  3. SERGIO

    Hola buenos dias, como puedo ordenar un vector a traves de otro vector???

    necesito que mi vector (genero) el cual contiene esta información
    «macho» «hembra» «macho» «hembra» «macho» «hembra»

    se quede de las siguiente manera:
    [1] «hembra» «macho» «hembra» «hembra» «macho» «macho»

    Responder
  4. Jorge Rodriguez

    Hola tengo una duda, espero puedas ayudar de mucho favor, soy nuevo en R y estoy trabajando una base de datos, digamos que tengo una concatenación de valores 111,131,121,312,322, y me faltan 30 combinaciones, y quiero agregarle a cada una de esas combinaciones, una categoría que va de muy alto a muy bajo por ejemplo 322 = Muy alto, 111 = muy bajo y así sucesivamente dependiendo su combinación.

    Y agregarla como una nueva columna con esas categorías como lo pones en tu ejemplo en mi caso podría ser concatenación y categoría.

    Muchas gracias y saludos desde México.

    Responder
  5. Julio

    Buenas tardes: Como podría ordenas filas (observaciones) de tipo factor, ejemplo
    1. Panamá
    2. Brasil
    3. Ecuador
    4. Nicaragua
    5. Costa Rica

    El orden oficial (que deseo) es:
    1. Nicaragua
    2. Panamá
    3. Ecuador
    4. Costa Rica
    5. Brasil
    Muchas gracias

    Responder
    • Luis

      Arrange(-nameCol)

      Responder
  6. Estela

    De un conjunto de datos como puedo seleccionar el mayor de ese conjunto?

    Responder
  7. Daniel

    Eres un crack, muchas gracias, ocupé en específico tu segunda opción «Ordenar dataframe por una columna en orden inverso», solo hice el vector ID y todo muy bien, GRACIAS

    Responder

Enviar un comentario

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