Rimuovi righe duplicate per colonna in R
-
Utilizzare la funzione
distinctdel pacchettodplyrper rimuovere righe duplicate per colonna in R -
Utilizzare le funzioni
group_by,filtereduplicatedper rimuovere righe duplicate per colonna in R -
Usa le funzioni
group_byesliceper 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