Rimuovi righe duplicate per colonna in R
-
Utilizzare la funzione
distinct
del pacchettodplyr
per rimuovere righe duplicate per colonna in R -
Utilizzare le funzioni
group_by
,filter
eduplicated
per rimuovere righe duplicate per colonna in R -
Usa le funzioni
group_by
eslice
per rimuovere righe duplicate per colonna in R
Questo articolo introdurrà come rimuovere le righe duplicate per colonna in R.
Utilizzare la funzione distinct
del pacchetto dplyr
per rimuovere righe duplicate per colonna in R
Il pacchetto dplyr
fornisce la funzione distinct
, una delle librerie di manipolazione dei dati più comuni utilizzate nel linguaggio R. distinct
seleziona righe univoche nel data frame. Prende il frame di dati come primo argomento e poi le variabili che devono essere considerate durante la selezione. È possibile fornire più variabili di colonna per filtrare le righe univoche, ma nel seguente frammento di codice dimostriamo gli esempi di singole variabili. Il terzo argomento è facoltativo e ha il valore predefinito - FALSE
, ma se l’utente passa esplicitamente TRUE
, la funzione manterrà tutte le variabili nel frame di dati dopo il filtraggio. Si noti che dplyr
utilizza una funzione operatore chiamata pipe of form - %>%
, che viene interpretata come la fornitura della variabile sinistra come primo argomento della funzione destra. Vale a dire, la notazione x %?% f(y)
diventa 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)
Utilizzare le funzioni group_by
, filter
e duplicated
per rimuovere righe duplicate per colonna in R
Un’altra soluzione per rimuovere le righe duplicate dai valori di colonna è raggruppare il frame di dati con la variabile di colonna e quindi filtrare gli elementi utilizzando le funzioni filter
e duplicated
. Il primo passo è fatto con la funzione group_by
che fa parte del pacchetto dplyr
. Successivamente, l’output dell’operazione precedente viene reindirizzato alla funzione filter
per eliminare le righe duplicate.
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))
Usa le funzioni group_by
e slice
per rimuovere righe duplicate per colonna in R
In alternativa, è possibile utilizzare la funzione group_by
insieme a slice
per rimuovere righe duplicate per valori di colonna. Anche slice
fa parte del pacchetto dplyr
e seleziona le righe per indice. È interessante notare che quando il frame di dati è raggruppato, allora slice
selezionerà le righe sull’indice dato in ciascun gruppo, come dimostrato nel seguente codice di esempio.
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