Suppression du cadre de données de lignes en double dans R [fermé]

71

Comment puis-je supprimer les lignes en double de cet exemple de cadre de données?

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

Je voudrais supprimer les doublons basés sur les deux colonnes:

A   1
A   2
B   4
B   1
C   2

L'ordre n'est pas important.

Jana
la source
@whuber ne devrait-il pas être déplacé vers SO?
llrs
@Llopis Oui, mais il est trop tard pour le faire maintenant - et il était trop tard quand nous l'avons fermé. Ce type de question a été envisagé (limite) sur le sujet il y a de nombreuses années, mais aujourd'hui, sa migration serait rapide.
whuber

Réponses:

115

unique()répond effectivement à votre question, mais une autre fonction liée et intéressante pour atteindre le même but est duplicated().

Cela vous donne la possibilité de rechercher quelles lignes sont dupliquées.

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
Rahul
la source
2
Merci de mentionner la fonction "dupliquée". Il peut être utilisé pour supprimer les lignes dupliquées en fonction d'un sous-ensemble des colonnes.
Joko
51

Vous recherchez 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
Bernd Weiss
la source
1
Merci Bernd. Je pensais que unique ne pouvait être appliqué qu'à une colonne spécifique. Je ne savais pas qu'il pouvait également être utilisé pour l'ensemble du bloc de données. merci encore
Jana