9
votes

Matrice de génération et de sommation

Je suis relativement nouveau à r, alors pardonnez-moi pour ce que je crois être une question relativement simple.

J'ai des données sous la forme xxx

où AE sont des gens et 1-5 sont des binaires de savoir si elles ont ou non cette qualité. J'ai besoin de faire une matrice d'A-E où la cellule A, B = 1 si la somme de toute qualité 1-5 pour la somme A & B à 2. (S'ils partagent au moins une qualité). Le simple 5x5 serait: xxx

J'ai alors besoin de résumer la matrice entière. (Ci-dessus serait 9). J'ai des milliers d'observations, donc je ne peux pas faire cela à la main. Je suis sûr qu'il y a un peu de code de code facile, je ne suis tout simplement pas assez expérimenté.

Merci!

Edit: J'ai importé les données à partir d'un fichier .csv Avec les colonnes (1-5 ci-dessus) comme variables, dans les données réelles, j'ai 40 variables. A-e sont des observations d'identification uniques des personnes, d'environ 2000. J'aimerais également savoir comment la convertir en une matrice, afin d'exécuter les grandes réponses que vous avez déjà fournies. Merci!


0 commentaires

3 Réponses :


1
votes

Vous pouvez utiliser externe , si m est votre matrice carrée: xxx

Données: < / p> xxx


0 commentaires

7
votes

Vous pouvez utiliser la multiplication de matrice ici xxx

puis régler la diagonale sur une, si nécessaire xxx

comme Davida pointe dans les commentaires tcrossprod est un m% *% t (m)

plusieurs façons d'eux calculer le somme l ici est un xxx


7 commentaires

Merci! Je comprends cela, et cela devrait fonctionner, mais je dois poser une question plus facile, j'ai les données maintenant comme variables. Comment puis-je modifier cela en matrice sans avoir à taper dans tous les chiffres?


Je vous en prie. Si vous avez chaque ligne, vous pouvez utiliser rbind pour les lier ensemble, il formera un matrice . Sinon, si vos données sont un data.frame , vous pouvez utiliser as.matrix . Si celles-ci ne fonctionnent pas, pouvez-vous ajouter une petite modification à votre question montrant comment les données sont stockées, merci


Merci, j'ai ajouté la modification ci-dessus. J'ai importé les données d'un fichier .csv avec les colonnes (1-5 ci-dessus) en tant que variables, dans les données réelles que j'ai 40 variables. A-e sont des observations d'identification uniques des personnes, d'environ 2000. J'aimerais également savoir comment la convertir en une matrice, afin d'exécuter les grandes réponses que vous avez déjà fournies.


Vous n'avez donc qu'un seul jeu de données lus avec lis.csv qui a toutes les données?


Oui avec les têtes de colonne, qui sont les variables et les fichiers binaires de la sortie, un fichier .csv .csv


Hmm ... Donc, M <- AS.Matrix (YourData) fonctionne pour la convertir en matrice. Sinon, pouvez-vous poster un petit bit de vos données à l'aide de dput (YourData [1: 5, 1: 5]) . Merci


Laissez-nous Continuer cette discussion dans le chat .



1
votes

Et ça? (Bien sûr, pas aussi élégant que la solution crossprod ): xxx


0 commentaires