6
votes

Comment faire correspondre les identifiants manquants?

J'ai une grande table avec 50000 OBS. Les éléments suivants imminent la structure: xxx

où il y a des valeurs manquantes sur le vecteur "A". Cependant, j'ai des tables dans lesquelles l'identifiant et les chaînes manquantes sont incluses: xxx

est un moyen d'inclure les chaînes manquantes de la clé dans la colonne A à l'aide de l'ID?

r

0 commentaires

3 Réponses :


0
votes

Les vecteurs nommés font de belles tables de recherche: xxx

lookup est maintenant un vecteur nommé, vous pouvez accéder à chaque valeur par lookUp [ID] E.G. Recherche ["2"] (Assurez-vous que le nombre est un caractère, pas numérique) xxx


2 commentaires

Match semble être plus rapide sur de grands vecteurs / données.frames.


Je pense que cette façon est plus lisible que la correspondance, mais oui une vitesse probablement importante pour les gros cadres.



1
votes

Vous pouvez simplement utiliser match code>; Cependant, je recommanderais que vos deux jeux de données utilisent les deux caractères code> S au lieu de facteur code> S pour empêcher les maux de tête ultérieurement.

factor(df$ID, levels = key$ID, labels = key$a)
## [1] A B C D E F G H I
## Levels: A B C D E F G H I


1 commentaires

Bonjour, merci pour la suggestion. Suite à vos conseils, je viens d'obtenir sur mes données d'origine un vecteur comme sortie avec la longueur de mon NA mélangé avec des entrées et na



2
votes

Une autre option consiste à utiliser data.table code> s rapide joindre binaire rejoindre em> et mise à jour par référence em> capacités xxx pré> Si vous souhaitez remplacer seul em> le NA code> S (pas tous les em> les cas joints), un peu plus compliqué implémintant sera p >

setkey(setDT(key), ID)
setkey(setDT(df), ID)[is.na(a), a := key[.SD, a]]


2 commentaires

Hallo David, merci d'avoir montré les deux sens. Je sais que c'est difficile à expliquer sans montrer les données d'origine, mais les deux moyens ont traversé sans erreur et sans remplacer le na


Avez-vous réel NA s ou juste caractère "na" ? Quoi qu'il en soit, la première méthode devrait fonctionner dans tous les cas. Il est également possible qu'aucun cas dans clé correspondant df .