Sous-ensemble de cas uniques, basés sur plusieurs colonnes
J'aimerais sous-ensemble d'un dataframe pour inclure uniquement les lignes qui ont des combinaisons de trois colonnes. Ma situation est similaire à celle présentée dans cette question, mais je tiens à préserver les autres colonnes dans mes données. Voici mon exemple:
> df
v1 v2 v3 v4 v5
1 7 1 A 100 98
2 7 2 A 98 97
3 8 1 C NA 80
4 8 1 C 78 75
5 8 1 C 50 62
6 9 3 C 75 75
La demande de sortie serait quelque chose comme cela, où je suis à la recherche de cas en fonction de v1, v2, et v3 uniquement:
> df.new
v1 v2 v3 v4 v5
1 7 1 A 100 98
2 7 2 A 98 97
3 8 1 C NA 80
6 9 3 C 75 75
Si j'ai pu récupérer le non-lignes uniques qui serait beaucoup trop:
> df.dupes
v1 v2 v3 v4 v5
3 8 1 C NA 80
4 8 1 C 78 75
5 8 1 C 50 62
J'ai vu une question connexe de savoir comment le faire en sql (ici), mais je ne peux pas obtenir ce dans R. je suis sûr que c'est simple mais de jouer avec unique() et de sous-ensemble() n'a pas été fructueuse. Merci à l'avance.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
duplicated()
fonction pour trouver les combinaisons uniques:Pour obtenir uniquement les doublons, vous pouvez vérifier cela dans deux directions:
c(1,3)
.df[!duplicated( df[c(1,3)] ), ]
Vous pouvez utiliser le
plyr
package:À l'aide de
dplyr
que vous pouvez faire:ouais, mais à l'aide de plyr et ddply est très très lent si vous avez trop de données.
vous shd essayer quelque chose de ce genre:
ou::
shd être plus rapide pour la plupart.
de la tester et laissez-nous savoir
il y a quelques erreurs, mais im deviner que vous pourriez faire aussi longtemps que vous obtenez l'idée.
également essayer d'unique et de tout ce qui
dplyr
a pratiquement remplacé plyr et ddply, Maintenant à la fois la syntaxe est propre et logique ET il s'exécute plus rapidement que la base de R.Un non-élégant, mais fonctionnel est de coller les entrées de ligne et de trouver qui sont uniques (ou non-unique) lignes, quelque chose comme:
puis obtenir les indices des doublons avec quelque chose comme: