J'essaie de vérifier si deux variables ont une relation un à un. Une des deux variables contient des caractères d'adresse, tandis que l'autre contient un ID à l'adresse. J'aimerais voir s'il s'agit d'une correspondance un à un. Je pensais convertir des caractères en code ASCII ou leur attribuer une valeur en utilisant une fonction mathématique. Mais je veux savoir s'il existe d'autres moyens plus faciles et plus efficaces de le faire.Quelle est la meilleure façon de vérifier la correspondance dans
0
A
Répondre
4
Vous pouvez utiliser table
et vérifier si la matrice résultante a exactement 1 dans chaque ligne et dans chaque colonne. Cela vous indique également où sont les doublons.
d <- data.frame(
x = sample(LETTERS, 10, replace=TRUE),
y = sample(LETTERS, 10, replace=TRUE)
)
m <- table(d) != 0
all(rowSums(m) == 1) && all(colSums(m) == 1)
Mais s'il y a beaucoup de données, ce n'est pas très efficace. Vous pouvez utiliser une matrice creuse à la place.
library(Matrix)
m <- sparseMatrix(
i = as.numeric(as.factor(d$x)),
j = as.numeric(as.factor(d$y)),
x = rep(1, nrow(d))
)
m <- m > 0
all(rowSums(m) == 1) && all(colSums(m) == 1)
Vous pouvez également utiliser sqldf
.
library(sqldf)
sqldf("SELECT x, COUNT(DISTINCT y) AS n FROM d GROUP BY x HAVING n > 1")
sqldf("SELECT y, COUNT(DISTINCT x) AS n FROM d GROUP BY y HAVING n > 1")
Vous pouvez aussi simplement compter le nombre de paires différentes que vous avez: il devrait être le même que le nombre de valeurs distinctes de x
et de y
.
nrow(unique(d)) == length(unique(d$x)) && nrow(unique(d)) == length(unique(d$y))
Questions connexes
- 1. Quelle est la meilleure façon de vérifier les utilisateurs verrouillés?
- 2. Quelle est la meilleure façon de vérifier les données existent dans la base de données?
- 3. Quelle est la meilleure façon d'exécuter `sum_by_sql`?
- 4. Quelle est la meilleure façon de détecter la couleur blanche?
- 5. Quelle est la meilleure façon d'implémenter hashCode()?
- 6. Quelle est la meilleure façon d'apprendre WCF?
- 7. Quelle est la meilleure façon d'apprendre CUDA?
- 8. Quelle est la meilleure façon d'apprendre WebGL
- 9. Quelle est la meilleure façon d'interroger cela?
- 10. Quelle est la meilleure façon d'affirmer les redirections dans Selenium?
- 11. Quelle est la meilleure façon de vérifier la connexion Internet dans Ionic
- 12. Quelle est la meilleure façon d'arrêter un thread dans Java?
- 13. meilleure façon de vérifier la classe
- 14. Quelle est la meilleure façon de vérifier les autorisations de création de fichiers dans Java
- 15. Quelle est la meilleure façon de documenter la commutation intentionnelle?
- 16. Quelle est la meilleure façon de déboguer PHP dans WordPress?
- 17. Quelle est la meilleure façon de remplacer remote.origin.url dans Git?
- 18. Quelle est la meilleure façon de dupliquer fork() dans Windows?
- 19. Quelle est la meilleure façon de formater C# dans WordPress?
- 20. quelle est la meilleure façon de poster tableau dans ajax?
- 21. quelle est la meilleure façon de diviser la chaîne
- 22. Quelle est la meilleure façon de stocker la date?
- 23. Quelle est la meilleure façon de vérifier la capacité du système de fichiers en utilisant .Net?
- 24. Quelle est la meilleure façon de vérifier la prise en charge du téléchargement de fichiers XHR2?
- 25. Quelle est la meilleure façon de créer la classe d'usine
- 26. Quelle est la meilleure façon d'écrire la population de contenu?
- 27. Quelle est la meilleure façon de vérifier le navigateur de l'utilisateur dans ASP.NET?
- 28. Dans ActionScript, quelle est la meilleure façon de vérifier si une propriété de noeud xml existe?
- 29. Quelle est la meilleure façon de vérifier l'état de getopts dans bash?
- 30. Quelle est la meilleure façon de charger la balance? PHP
Pouvez-vous fournir un échantillon * minimal * de vos données? On ne sait pas ce que vous voulez dire en ce moment. Voir [créer un excellent exemple reproductible] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – thelatemail
Bonjour et bienvenue sur SO. Pour vous aider à créer un exemple reproductible, vous pouvez utiliser 'reproduire ()'. Les instructions sont ici: http://bit.ly/SORepro –