es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

R: Cómo mantener y filtrar duplicados dentro de las filas

¿Es posible mantener y filtrar duplicados dentro de las filas?

Aquí hay datos ficticios:

a <- data.frame(c('a1', 'a1', 'a1', 'a2', 'a3', 'a3'),
                  c(1, 2, 3, 1, 2, 3),
                  stringsAsFactors = FALSE)
a

colnames(a) <- c('id', 'number')
a
#   id number
# 1 a1      1
# 2 a1      2
# 3 a1      3
# 4 a2      1
# 5 a3      2
# 6 a3      3

# 'Resultado esperado

#   id number
# 1 a1      1
# 2 a1      2
# 3 a1      3
# 5 a3      2
# 6 a3      3

Como puede ver, se eliminan las filas no duplicadas de la variable “id”.

¿Y podemos ajustar el filtrado? Por ejemplo: mantener y filtrar 3 o más duplicados dentro de la variable “id”.

¿Es alcanzable? El enfoque de dplyr será útil.

Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible mantener y filtrar los duplicados dentro de las filas usando dplyr. Aquí te explico cómo:

    Para mantener solo la primera aparición de cada fila duplicada:

    library(dplyr)
    
    a %>%
      distinct()
    

    Para mantener solo los duplicados:

    a %>%
      group_by(id, number) %>%
      filter(n() > 1)
    

    Para filtrar los duplicados dentro de la variable “id” si hay 3 o más duplicados:

    a %>%
      group_by(id) %>%
      filter(n() < 3)
    

    La función group_by() se utiliza para agrupar los datos por la variable especificada antes de realizar cualquier operación en ella. La función filter() se utiliza para filtrar las filas según una condición.

    En el último ejemplo, utilizamos n() para contar el número de filas en cada grupo y filtramos los grupos con menos de 3 filas.

Comments are closed.