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.


@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

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.