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.