2017-10-11 2 views
1

J'utilise RStudio. J'essaye de former une fonction qui me permet de vérifier si des colonnes dans mon cadre de données ont des doublons ou non. Je voudrais que cette fonction passe par chaque colonne et produise un TRUE ou un FALSE. Jusqu'à présent, j'ai:Comment savoir quelles colonnes d'un bloc de données ont toutes les valeurs uniques ou non

longueur (unique (electionresults $ Obama)) == dim (electionresults) [1]

Et cela fonctionne sur une seule colonne. Comment l'obtenir afin que je puisse appliquer cette fonction sur chaque colonne de ma base de données electionsresult? Est-ce une boucle d'une certaine sorte. Je ne sais pas quoi mettre Obama et [1] à faire.

+3

Que diriez-vous de 'spply (electionresults, anyDuplicated)'? – MrFlick

+0

En utilisant votre méthode - vous pouvez utiliser la boucle 'apply', ou 'sapply', ou' lapply', ou 'lapply', ou' for' ... Parce que vous voulez le faire pour * chaque * colonne, vous ne mettez pas le nom de tout une colonne partout. – Gregor

Répondre

1

En utilisant data.table vous pouvez faire

setDT(df) 
nrow(df) - df[, lapply(.SD, uniqueN)] 

Cela donne le nombre de valeurs en double pour chaque colonne.

edit: La solution de MrFlick sapply(electionresults, anyDuplicated) est plus propre et semble aussi être environ 4x plus rapide.