2015-06-29

Eliminar duplicados de un data frame en R

Title

Problema

Deseamos eliminar los duplicados de un data frame en R.

Solución

Disponemos de múltiples opciones. Emplearemos como ejemplo el conjunto de datos iris que contiene dos filas duplicadas: la 102 y la 143

  • Paquete base
  • Detectamos los duplicados.

    # De arriba a abajo
    anyDuplicated(iris) # Número de fila
    iris[duplicated(iris), ]  # Fila
    
        Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
    143          5.8         2.7          5.1         1.9 virginica
    
    # De abajo a arriba
    anyDuplicated(iris, fromLast = TRUE)
    iris[duplicated(iris, fromLast = TRUE), ]
    
        Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
    102          5.8         2.7          5.1         1.9 virginica
    
    Eliminamos los duplicados.

    unique(iris)
    iris[!duplicated(iris), ]
    # En orden inverso
    unique(iris, fromLast = TRUE)
    iris[!duplicated(iris, fromLast = TRUE), ]
    
  • Paquete dplyr
  • library(dplyr)
    iris %>% distinct
    
  • Paquete sqldf
  • library(sqldf)
    sqldf('SELECT DISTINCT * FROM iris')
    

    Notas

    Usando el paquete base veremos que conserva el número de filas —150— aunque observaremos, dependiendo del orden que hayamos escogido, que la fila 102 o 143 habrá desaparecido. En cambio con dplyr y sqldf, el resultado numera de nuevo las filas, mostrando la última con el número 149.

    Entradas relacionadas

    No hay comentarios:

    Publicar un comentario

    Nube de datos