J'ai lu un CSV
fichier dans un data.frame R. Certaines des lignes ont le même élément dans l'une des colonnes. Je souhaite supprimer les lignes dupliquées dans cette colonne. Par exemple:
platform_external_dbus 202 16 google 1
platform_external_dbus 202 16 space-ghost.verbum 1
platform_external_dbus 202 16 localhost 1
platform_external_dbus 202 16 users.sourceforge 8
platform_external_dbus 202 16 hughsie 1
Je voudrais une seule de ces lignes car les autres ont les mêmes données dans la première colonne.
r
duplicates
r-faq
user1897691
la source
la source
google
oulocalhost
ouhughsie
?Réponses:
isolez simplement votre bloc de données aux colonnes dont vous avez besoin, puis utilisez la fonction unique: D
la source
[,1:3]
partie de ce code? Je suis nouveau sur R, c'est pourquoi je demande ce que je ne peux que supposer est une question évidente.Pour les personnes qui sont venues ici pour rechercher une réponse générale à la suppression des lignes en double, utilisez
!duplicated()
:Réponse de: Suppression des lignes dupliquées du bloc de données R
la source
df[!duplicated(df[, 1:2])]
La fonction
distinct()
dudplyr
package effectue une suppression arbitraire des doublons, soit à partir de colonnes / variables spécifiques (comme dans cette question), soit en tenant compte de toutes les colonnes / variables.dplyr
fait partie dutidyverse
.Données et package
Supprimer les lignes dupliquées dans une colonne spécifique (par exemple, une colonne
a
)Notez que
.keep_all = TRUE
conserve toutes les colonnes, sinon seule la colonnea
serait conservée.Supprimez les lignes qui sont des doublons complets d'autres lignes:
la source
.keep_all
est pour que ce soit de garder toutes les colonnes, ne doit pas être mélangé aveckeep
danspandas
.Le
data.table
paquet a aussiunique
etduplicated
méthodes de ses propres avec quelques fonctionnalités supplémentaires.Les méthodes
unique.data.table
et lesduplicated.data.table
méthodes ont unby
argument supplémentaire qui vous permet de passer respectivement uncharacter
ou uninteger
vecteur de noms de colonnes ou leurs emplacementsUne autre caractéristique importante de ces méthodes est un énorme gain de performances pour des ensembles de données plus volumineux
la source
Vous pouvez également utiliser
dplyr
ladistinct()
fonction de! Il a tendance à être plus efficace que les options alternatives, surtout si vous avez beaucoup d'observations.la source
la réponse générale peut être par exemple:
production:
la source
-which
, cela entraînera une erreur s'il n'y a pas de doublons, l'utilisationdf[!(duplicated(df)), ]
peut être plus sûre.Avec
sqldf
:Solution:
Production:
la source
Ou vous pouvez imbriquer les données des cols 4 et 5 dans une seule ligne avec
tidyr
:Les doublons de col 2 et 3 sont maintenant supprimés pour l'analyse statistique, mais vous avez conservé les données de col 4 et 5 dans un tibble et pouvez revenir à la base de données d'origine à tout moment avec
unnest()
.la source
Supprimer les lignes en double d'un dataframe
Dans cet ensemble de données, il n'y a pas une seule ligne en double, il a donc renvoyé le même nombre de lignes que dans mydata.
Supprimer les lignes en double en fonction d'une seule variable
La fonction .keep_all est utilisée pour conserver toutes les autres variables dans la trame de données de sortie.
Supprimer les lignes en double en fonction de plusieurs variables
La fonction .keep_all est utilisée pour conserver toutes les autres variables dans la trame de données de sortie.
(à partir de: http://www.datasciencemadesimple.com/remove-duplicate-rows-r-using-dplyr-distinct-function/ )
la source
Ce problème peut également être résolu en sélectionnant la première ligne de chaque groupe où le groupe est constitué des colonnes sur la base desquelles nous voulons sélectionner des valeurs uniques (dans l'exemple partagé, il ne s'agit que de la 1ère colonne).
En utilisant la base R:
Dans
dplyr
Ou en utilisant
data.table
Si nous avons besoin de trouver des lignes uniques basées sur plusieurs colonnes, ajoutez simplement ces noms de colonnes dans une partie de regroupement pour chacune des réponses ci-dessus.
Les données
la source
Voici un très simple, rapide
dplyr
/tidy
solution:Supprimez les lignes entièrement identiques:
Supprimez les lignes identiques uniquement dans certaines colonnes:
la source