Remova linhas duplicadas por coluna em R
-
Use a função
distinct
do pacotedplyr
para remover linhas duplicadas por coluna em R -
Use as funções
group_by
,filter
eduplicated
para remover linhas duplicadas por coluna em R -
Use as funções
group_by
eslice
para remover linhas duplicadas por coluna em R
Este artigo irá apresentar como remover linhas duplicadas por coluna em R.
Use a função distinct
do pacote dplyr
para remover linhas duplicadas por coluna em R
O pacote dplyr
fornece a função distinct
, uma das bibliotecas de manipulação de dados mais comuns usadas na linguagem R. distinct
seleciona linhas exclusivas no quadro de dados fornecido. Leva o quadro de dados como o primeiro argumento e, em seguida, as variáveis que precisam ser consideradas durante a seleção. Várias variáveis de coluna podem ser fornecidas para filtrar as linhas exclusivas, mas no trecho de código a seguir, demonstramos os exemplos de variável única. O terceiro argumento é opcional e tem o valor padrão - FALSE
, mas se o usuário passar explicitamente TRUE
, a função manterá todas as variáveis no quadro de dados após a filtragem. Observe que dplyr
usa uma função de operador chamada tubos de forma - %>%
, que é interpretado como fornecendo a variável esquerda como o primeiro argumento da função direita. A saber, a notação x %?% f(y)
torna-se 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)
Use as funções group_by
, filter
e duplicated
para remover linhas duplicadas por coluna em R
Outra solução para remover linhas duplicadas por valores de coluna é agrupar o quadro de dados com a variável da coluna e, em seguida, filtrar os elementos usando as funções filter
e duplicated
. O primeiro passo é feito com a função group_by
que faz parte do pacote dplyr
. Em seguida, a saída da operação anterior é redirecionada para a função filter
para eliminar linhas 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))
Use as funções group_by
e slice
para remover linhas duplicadas por coluna em R
Alternativamente, pode-se utilizar a função group_by
junto com slice
para remover linhas duplicadas por valores de coluna. slice
também faz parte do pacote dplyr
e seleciona linhas por índice. Curiosamente, quando o quadro de dados é agrupado, então slice
seleciona as linhas no índice fornecido em cada grupo, conforme demonstrado no código de amostra a seguir.
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)
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