# Detección y tratamiento de duplicados

Los datos **duplicados** se refieren a observaciones o registros en un conjunto de datos que tienen los mismos valores en todas o en la mayoría de sus variables. Es decir, dos o más filas en un conjunto de datos son idénticas o muy similares en términos de los valores que contienen.

La presencia de datos duplicados puede afectar la calidad y la validez de los análisis estadísticos y los modelos predictivos, ya que pueden introducir sesgos y distorsiones en los resultados. Por lo tanto, es común realizar la detección y el tratamiento de datos duplicados al limpiar y preparar los datos antes de realizar análisis más avanzados.

Los datos duplicados pueden ocurrir por diversas razones:&#x20;

1. Como errores de entrada de datos,
2. Problemas en la recolección de datos,
3. O simplemente porque las mismas observaciones se han registrado más de una vez.

Identificar y abordar estos duplicados es esencial para asegurar la precisión y la confiabilidad de los resultados de cualquier análisis o modelado que se realice con esos datos.

**Ejemplo de duplicados en R:**

```r
df <- data.frame(ID = c(1, 2, 3, 4, 2, 5),  
                Name = c("John", "Jane", "Bob", "Alice", "Jane", "Charlie"),  
                Age = c(25, 30, 22, 28, 30, 35),  
                Score = c(85, 92, 78, 90, 92, 80))
```

Existen varias formas de detectar duplicados en R:

**Forma 1**: La función <mark style="color:green;">**`duplicated()`**</mark> te permite identificar las filas duplicadas en un dataframe y junto con <mark style="color:green;">**`!`**</mark> los puedes eliminar y conservar solo las primeras ocurrencias:

```r
###Identificación de los duplicados
duplicated(df)

# Fijaos que sólo te da uno de los dos duplicados
[1] FALSE FALSE FALSE FALSE  TRUE FALSE

# Eliminar duplicados y conservar solo las primeras ocurrencias
df_no_duplicates <- df[!duplicated(df), ]
df_no_duplicates
```

**Forma 2**: La función <mark style="color:green;">**`unique()`**</mark> se puede utilizar para obtener las filas únicas de un dataframe, lo que puede también ayudar a identificar y tratar los duplicados, **la diferencia es que con esta no sabes cuáles han sido los duplicados ni cuantos:**

```r
# Obtener filas únicas
unique(df)
```

**Forma 3**: Por otro lado la librería **`dplyr`** proporciona la función <mark style="color:green;">**`distinct()`**</mark> para obtener filas únicas de un dataframe muy similar a unique. También se puede utilizar para eliminar duplicados:

```r
library(dplyr)
# Eliminar duplicados usando distinct
distinct(df)
```

**Forma 4:** y finalmente la función <mark style="color:green;">**`subset()`**</mark> se puede utilizar para eliminar duplicados basándose en una condición:

```r
# Eliminar duplicados basados en la columna 'ID'
df_no_duplicates <- subset(df, !duplicated(ID)) 
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://silvia-pineda.gitbook.io/estudio-y-depuracion-de-datos/tema-2-control-de-integridad-de-los-datos/deteccion-y-tratamiento-de-duplicados.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
