相關

2014-10-26 55 views
-2

我有一個表,看起來像這樣的條件計算:相關

Year Class Value1 Value2 Value3 
2006 A 45  27  96 
2007 A 74  45  26 
2008 C 74  41  78 
2009 D 56  65  45 
2010 C 12  14  15 
2011 A 25  85  50 
2012 B 26  45  12 
2013 C 15  23  29 
2014 D 86  36  53 

我如何才能找到值1和值2之間的相關性;所有行的值1和值3?

I`am嘗試這樣做,對值1和值2:

cor <- data[,list(correlation=cor(Value1,Value2)),by=list(Year, Class)] 

但得到的錯誤:

Error in `[.data.frame`(data, , list(correlation = cor(Value1, Value2)), : 
    unused argument (by = list(Year, Class)) 
+0

這可能有助於HTTP://計算器。 com/questions/8791650/spearman-correlation-by-group-in-r和這個http://stats.stackexchange.com/questions/4040/r-compute-correlation-by-group – user20650 2014-10-26 22:38:16

+0

是你的整個表,還是對於'Year'和'Class的每個組合,是否有多行? '在你的實際數據框中? – eipi10 2014-10-26 22:42:53

+0

@eipi這是整個表 – user45415631 2014-10-26 23:06:53

回答

1

下面是返回一個列表,其中每個列表元素是相關的方式對於給定值爲Class的矩陣。假設你的問題的表稱爲dat數據幀:

this CrossValidated answer改編:

library(plyr) 

corrFunc <- function(dat) { 
    return(data.frame(cor(dat[,-c(1,2)]))) 
} 

corr.list = dlply(dat, .(Class), corrFunc) 

這裏的輸出是什麼樣子:

$A 
      Value1  Value2  Value3 
Value1 1.0000000 -0.5920024 -0.4347386 
Value2 -0.5920024 1.0000000 -0.4684250 
Value3 -0.4347386 -0.4684250 1.0000000 

$B 
     Value1 Value2 Value3 
Value1  NA  NA  NA 
Value2  NA  NA  NA 
Value3  NA  NA  NA 

$C 
      Value1 Value2 Value3 
Value1 1.0000000 0.9580847 0.9855342 
Value2 0.9580847 1.0000000 0.9927778 
Value3 0.9855342 0.9927778 1.0000000 

$D 
     Value1 Value2 Value3 
Value1  1  -1  1 
Value2  -1  1  -1 
Value3  1  -1  1 

attr(,"split_type") 
[1] "data.frame" 
attr(,"split_labels") 
    Class 
1  A 
2  B 
3  C 
4  D 
+0

謝謝!可以在表中添加結果:第一列「A,B,C,D」,第二列值1和值2,第三列之間的相關性值1和值3之間的相關性 – user45415631 2014-10-27 14:04:14