Je voudrais créer un vecteur dite correspondant composé de binaires. Tous les chiffres doivent être zéro à moins que des éléments n'appartiennent à la même variable.
Voici un exemple: p> Ainsi, j'ai un jeu de données avec toutes les variables de la première ligne. Maintenant, je crée deux groupes: var1 et var2. P> Le vecteur correspondant de l'élément "A" est censé ressembler à: p> Les chiffres correspondent à mon jeu de données. Si les variables de mon ensemble de données sont dans le même groupe, il devrait y avoir un 1 dans mon vecteur correspondant, et un 0 sinon. P> Cependant, mon ensemble de données réel est trop gros pour le faire manuellement. Est-ce que quelqu'un comprend ce que je veux faire? P> p>
4 Réponses :
Utilisation de ifelse code> fonction et
% dans% in% code> opérateur.
matching_a <- ifelse(dataset %in% var1, 1, 0)
matching_a
# [1] 1 1 0 0 0 1 1
> vars = list(var1, var2) > 1 * sapply(vars, function(x) dataset %in% x) [,1] [,2] [1,] 1 0 [2,] 1 0 [3,] 0 1 [4,] 0 1 [5,] 0 1 [6,] 1 0 [7,] 1 0
Je vois que John Colby a déjà pris la voie que j'allais suggérer, mais je pensais que je le ferais plus explicite.
La fonction dyadique Vous devez également consulter % en% code> renvoie un vecteur logique et multiplication par 1 contraindre à "numérique" em> mode. Cela pourrait également être fait avec: p>
? Match code> sur lequel le
% in% code> fonction est basé. p> p>
J'ai utilisé une légère variation de l'approche de John ci-dessus (et la solution de Max) pour générer une liste de «vecteurs binaires» (pour plusieurs correspondances) comme suit:
> binaryLst [[1]] [1] 1 1 0 0 0 1 1 [[2]] [1] 0 0 1 1 1 0 0