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
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), ]
library(dplyr)
iris %>% distinct
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