2016-08-26 2 views
4

の値として指定された列の間の相関を探す私は2つのデータフレーム、1は以下に類似(しかし、約150ペアで)、個人のペアのリストである:名別データフレーム

ID_1 ID_2 
X14567 X26789 
X12637 X34560 
X67495 X59023 

他のデータフレームは、個体ごとに一度の列とその下の個体に関する数値で構成されます。すべてが約300列と300行を語った。例:

X14567 X12637 X26789 X67495 X34560 X59023 
0.41 0.29 0.70 0.83 0.41 0.30 
0.59 0.44 0.20 0.94 0.03 0.97 
0.48 0.91 0.78 0.92 0.40 0.09 
0.07 0.21 0.42 0.14 0.96 0.96 
0.33 0.13 0.53 0.04 0.52 0.49 
0.94 0.28 0.37 0.26 0.11 0.09 

私は、各個人のペア間でこれらの値の相関関係を見たいと思います。以下のようなもので終わるために:

ID_1  ID_2 Correlation 
X14567  X26789  -0.25 
X12637  X34560  -0.25 
X67495  X59023  -0.11 

、私は私がすることができ、このような方法で、間の相関を見つける必要がある2つの列の名前を指定するには、最初のデータフレームからの値を引くことができます方法はあります最初のデータフレームの各行に対して簡単に繰り返されますか?あなたの助け

+2

これは単に '適用(DF1、2、関数(x)はCOR(DF2 [X [1ではないでしょう]]]、df2 [[x [2]])) '? –

+1

2番目のデータフレーム内のすべての列間の相関関係が必要な場合は、 'library(reshape2);を実行します。溶融(cor(df)) 'となる。 – eipi10

答えて

2

ため

多くのおかげで、xとyは、あなたの2 data.framesであり、列名が適切に設定されている、あなたはapplyを使用することができます。

apply(x, 1, function(row) cor(y[row[1]], y[row[2]])) 

そこから自分のx data.frameに値を追加します。

x$cor <- apply(x, 1, function(row) cor(y[row[1]], y[row[2]])) 


     V1  V2  cor 
2 X14567 X26789 -0.2515737 
3 X12637 X34560 -0.2563294 
4 X67495 X59023 -0.1092830 
+1

華麗な、ありがとう、完璧に働いた! – Caragh

1

あなたは自分の第二のデータフレーム内のすべての列間の相関をしたい場合は、あなたが行うことができます:

library(reshape2) 

df.corr = melt(cor(df)) 

繰り返す列を削除するには(つまり、各列とその列自体の相関関係):

df.corr = subset(df.corr, Var1 != Var2) 

内蔵用いmtcarsデータフレーム例:

mtcars.corr = melt(cor(mtcars)) 
Var1 Var2  value 
1 mpg mpg 1.00000000 
2 cyl mpg -0.85216196 
3 disp mpg -0.84755138 
... 
119 am carb 0.05753435 
120 gear carb 0.27407284 
121 carb carb 1.00000000 
関連する問題