Eliminar filas duplicadas por columna en R

Jinku Hu 30 enero 2023
  1. Utilice la función distinct del paquete dplyr para eliminar filas duplicadas por columna en R
  2. Utilice las funciones group_by, filter y duplicated para eliminar filas duplicadas por columna en R
  3. Utilice las funciones group_by y slice para eliminar filas duplicadas por columna en R
Eliminar filas duplicadas por columna en R

Este artículo presentará cómo eliminar filas duplicadas por columna en R.

Utilice la función distinct del paquete dplyr para eliminar filas duplicadas por columna en R

El paquete dplyr proporciona la función distinct, una de las bibliotecas de manipulación de datos más comunes utilizadas en el lenguaje R. Distinto selecciona filas únicas en el DataFrame dado. Toma el DataFrame como primer argumento y luego las variables que deben tenerse en cuenta durante la selección. Se pueden proporcionar varias variables de columna para filtrar las filas únicas, pero en el siguiente fragmento de código, demostramos los ejemplos de una sola variable. El tercer argumento es opcional y tiene el valor predeterminado: FALSE, pero si el usuario pasa explícitamente TRUE, la función mantendrá todas las variables en el DataFrame después del filtrado. Tenga en cuenta que dplyr utiliza una función de operador llamada tuberías de forma - %>%, que se interpreta como el suministro de la variable de la izquierda como el primer argumento de la función de la derecha. Es decir, la notación x %?% f(y) se convierte en f(x, y).

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% distinct(id, .keep_all = TRUE)
t2 <- df1 %>% distinct(gender, .keep_all = TRUE)
t3 <- df1 %>% distinct(variant, .keep_all = TRUE)

df2 <- mtcars

tmp1 <- df2 %>% distinct(cyl, .keep_all = TRUE)
tmp2 <- df2 %>% distinct(mpg, .keep_all = TRUE)

Utilice las funciones group_by, filter y duplicated para eliminar filas duplicadas por columna en R

Otra solución para eliminar filas duplicadas por valores de columna es agrupar el DataFrame con la variable de columna y luego filtrar elementos usando las funciones de filter y duplicated. El primer paso se realiza con la función group_by que forma parte del paquete dplyr. A continuación, la salida de la operación anterior se redirige a la función filter para eliminar filas duplicadas.

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% group_by(id) %>% filter (! duplicated(id))
t2 <- df1 %>% group_by(gender) %>% filter (! duplicated(gender))
t3 <- df1 %>% group_by(variant) %>% filter (! duplicated(variant))

df2 <- mtcars

tmp3 <- df2 %>% group_by(cyl) %>% filter (! duplicated(cyl))
tmp4 <- df2 %>% group_by(mpg) %>% filter (! duplicated(mpg))

Utilice las funciones group_by y slice para eliminar filas duplicadas por columna en R

Alternativamente, se puede utilizar la función group_by junto con slice para eliminar filas duplicadas por valores de columna. slice también forma parte del paquete dplyr y selecciona filas por índice. Curiosamente, cuando el DataFrame está agrupado, entonces slice seleccionará las filas en el índice dado en cada grupo, como se demuestra en el siguiente código de muestra.

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% group_by(id) %>% slice(1)
t2 <- df1 %>% group_by(gender) %>% slice(1)
t3 <- df1 %>% group_by(variant) %>% slice(1)

df2 <- mtcars

tmp5 <- df2 %>% group_by(cyl) %>% slice(1)
tmp6 <- df2 %>% group_by(mpg) %>% slice(1)
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - R Data Frame