Eliminar duplicados de dataframes en R

por | Jun 19, 2018 | R | 9 Comentarios

logo-rSe muestran diferentes formas en R de como eliminar duplicados en un dataframe definido inicialmente.

 

Cargar datos para ejemplos

sexo <- c(rep("hombre",5),rep("mujer",5))
pais <- c(rep("francia",3),rep("italia",3),rep("portugal",4))

datos <- data.frame(sexo=sexo,pais=pais)
head(datos, n=10)
#      sexo     pais
# 1  hombre  francia
# 2  hombre  francia
# 3  hombre  francia
# 4  hombre   italia
# 5  hombre   italia
# 6  mujer   italia
# 7   mujer portugal
# 8   mujer portugal
# 9   mujer portugal
# 10  mujer portugal

Eliminar duplicados de un dataframe

datos[!duplicated(datos), ]
#     sexo     pais
# 1 hombre  francia
# 2 hombre   italia
# 3  mujer   italia
# 4  mujer portugal

Eliminar duplicados forma simple

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

distinct(datos)
#     sexo     pais
# 1 hombre  francia
# 2 hombre   italia
# 3  mujer   italia
# 4  mujer portugal

Obtener el vector de duplicados

duplicated(datos)
#  [1] FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE

Selecionar los elementos no repetidos de una o varias columnas

distinct(datos, pais)
#       pais
# 1  francia
# 2   italia
# 3 portugal

Contar duplicados

nrow(datos[duplicated(datos), ])
# [1] 6

Seleccionar duplicados de un dataframe

datos[duplicated(datos), ]
#      sexo     pais
# 2  hombre  francia
# 3  hombre  francia
# 5  hombre   italia
# 8   mujer portugal
# 9   mujer portugal
# 10  mujer portugal

9 Comentarios

  1. Daniel

    Tengo filas donde un conjunto de variables están repetidas. No quiero que conserve siempre la primera obsevaion y elimine las demás.

    Quiero que me conserve , sujeto a una condición. Donde una variable varialbe dummy sea 1.
    ¿Cómo lo hago?

    Responder
  2. roger

    hola, como puedo eliminar nombres completos duplicadoso parecidos(ejemplo:Diego calvo, diego calvo) de una lista.

    saludos.

    Responder
    • alejandra

      hola Roger,
      una forma de resolverlo es que pases todo a mayúscula o minúscula para que tengan el mismo formato y eliminarlos.

      Saludos

      Responder
  3. Luis

    Hola Diego, muchas gracias por compartir tu conocimiento.
    Quisiera consultarte si conocés alguna otra forma de quitar duplicados de 2 más campos en conjunto pero más rápido que el método !duplicated. Tengo unos 50 MM de registros y tarda un poco.

    Muchas gracias

    Responder
  4. Luis

    Roger, suelo usa el siguiente código:

    filter(dataset,!grepl(«diego calvo»,Nombre_del_campo))

    Responder
  5. Carolina G

    Hola! Quiero contar la cantidad de veces que se repite una palabra en una columna de palabras, como lo puedo hacer?

    Responder
  6. Jhon

    Hola deseo solo obtener los datos que no presenta duplicado, registro únicos), alguien puede ayudarme

    Responder
  7. Yonatan Grisales

    Quiero conservar los duplicados en una nueva matrix

    Responder

Enviar un comentario

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