J'ai dataframe comme suit:pearson corrélation
x <- data.frame(Name=c("a", "b","c", "d", "e"),A=(1:5), B=(2:6), C=(7:11), D=c(1,1,1,1,1))
Je veux obtenir un dataframe y compris tous les coefficients de pearson d'un contre b, un vs c, un vs d, un vs e, b vs un , b vs c, b vs d, b vs e .... etc (à l'exclusion des auto-comparaisons, c'est-à-dire aa, bb, etc).
En mots d'ordre, je veux changer la trame de données
A B C D
a 1 2 7 1
b 2 3 8 1
c 3 4 9 1
d 4 5 10 1
e 5 6 11 1
à un résultat comme celui-ci dataframe
a b 0.989143436
a c 0.963282002
a d 0.93048421
a e 0.89585579
b c 0.9922798
b d 0.974216034
b e 0.951427811
c d 0.994675789
c e 0.982264673
d e 0.996357429
suivant Pls demander de bien vouloir moyen efficace de le faire.
EDIT
Merci pour l'aide de Michaelv2.
Basé sur le code proposé, je trouve les résultats sont les suivants:
X1 X2 value
1 A A 1
2 B A 1
3 C A 1
4 D A NA
5 A B 1
6 B B 1
7 C B 1
8 D B NA
9 A C 1
10 B C 1
11 C C 1
12 D C NA
13 A D NA
14 B D NA
15 C D NA
16 D D 1
Le message d'erreur est " message d'avertissement: Dans cor (x [2: 5], method = "pearson"): l'écart-type est zéro "
Il me semble que j'ai peut-être mal utilisé le code, pourriez-vous nous donner des instructions pour résoudre ce problème? Je vous remercie.
Eh bien, les étiquettes de ligne peut-être des étiquettes de ligne, il n'y a pas besoin de les omettre alors. De plus, l'OP voulait des corrélations entre les rangées de lignes, pas de colonnes-colonnes (mais un seul 't' fera l'affaire). – mbq
Techniquement, j'ai omis la première colonne de la trame de données (un caractère ou un vecteur de facteur, selon vos paramètres), pas les étiquettes de ligne, mais vous avez raison sur les corrélations entre les lignes. Merci d'avoir fait remarquer cela. – michaelv2