Rimozione del frame di dati delle righe duplicate in R [chiuso]


71

Come posso rimuovere le righe duplicate da questo frame di dati di esempio?

A   1
A   1
A   2
B   4  
B   1
B   1
C   2
C   2

Vorrei rimuovere i duplicati in base a entrambe le colonne:

A   1
A   2
B   4
B   1
C   2

L'ordine non è importante.


@whuber non dovrebbe essere spostato su SO?
— ll

@Llopis Sì, ma è troppo tardi per farlo ora - ed era troppo tardi quando l'abbiamo chiuso inizialmente. Questo tipo di domanda è stata considerata (al limite) sull'argomento molti anni fa, ma oggi sarebbe migrata rapidamente.
— whuber

Risposte:


115

unique()anzi risponde alla tua domanda, ma un'altra funzione correlata e interessante per raggiungere lo stesso scopo è duplicated().

Ti dà la possibilità di cercare quali righe sono duplicate.

a <- c(rep("A", 3), rep("B", 3), rep("C",2))
b <- c(1,1,2,4,1,1,2,2)
df <-data.frame(a,b)

duplicated(df)
[1] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE

> df[duplicated(df), ]
  a b
2 A 1
6 B 1
8 C 2

> df[!duplicated(df), ]
  a b
1 A 1
3 A 2
4 B 4
5 B 1
7 C 2

2
Grazie per aver menzionato la funzione "duplicata". Può essere utilizzato per eliminare le righe duplicate in base a un sottoinsieme delle colonne.
— Joko,

51

Stai cercando unique().

a <- c(rep("A", 3), rep("B", 3), rep("C",2))
b <- c(1,1,2,4,1,1,2,2)
df <-data.frame(a,b)
unique(df)

> unique(df)
  a b
1 A 1
3 A 2
4 B 4
5 B 1
7 C 2

1
Grazie Bernd. Ho pensato che unico potesse essere applicato solo per una colonna specifica. Non sapevo che potesse essere utilizzato anche per l'intero frame di dati. grazie ancora
— Jana,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.