2015-11-23 42 views
2

我的問題: 我有一個數據框中的68列調用data.frame(B)與每個列12值(行)。每列的循環

data.frame(B) 
    1° column 2° column 3° colum 
    1 1.65  1 
    2 7.8  2 
    3 1.2  3 
    4 3.4 
    5 
    6 
    7 
    ..... 
    12 

我有另一個數據幀的12個值調用data.frame(A)。

data.frame(A) 
    [1] -1.5683842 -1.6448055 -1.5663070 -0.7598736 0.9843939 1.6856689  
    [7] 2.0073107 1.8840261 1.0726286 0.2148070 -0.8835503  
    [12] -1.3923268 

我需要如果能夠以循環的方法來計算data.frame(A)和data.frame(B)中的每一列之間的相關性測試(cor.test)。 A的新聞中心柱和B. 的每列之間的Spearman相關的 結果應該是68值謝謝

+0

這是否DO:'sapply(B,COR,Y = A [[1]])'? – jogo

+3

嘗試'cor(A,B,method =「spearman」)' – Cath

+0

>方法> cor(A,B,method =「s」),結果爲68。這個問題,我不是爲什麼,是因爲這個值與STATISTICA 6.0等其他軟件的分析行爲不同。 ? – Diego

回答

2

@CathG指出,最簡單的解決方案是:

cor(b, a) # Using the dataset below 

的以下解決方案並不像Cath所建議的那樣短,但是它們具有更大的靈活性,因此具有價值。

可替換地,我會使用applycor以下列方式組合:

a = data.frame(matrix(runif(12*68), 12, 68)) 
b = runif(12) 
cor_results = apply(a, 2, cor, y = b) 
     X1   X2   X3   X4   X5   X6 
0.31350412 -0.05467418 -0.30931157 0.14405810 -0.02345752 -0.12373525 
     X7   X8   X9   X10   X11   X12 
0.01908565 -0.22919558 0.39268615 0.32430387 0.35093708 -0.22047010 
     X13   X14   X15   X16   X17   X18 
-0.39814052 -0.02533794 -0.03198359 0.58317791 -0.28128437 0.19024528 
     X19   X20   X21   X22   X23   X24 
-0.07923733 0.19769458 0.15992906 -0.11981105 0.26952069 0.21392988 
     X25   X26   X27   X28   X29   X30 
-0.40203609 -0.09928433 -0.10153816 0.04975818 -0.17193521 0.26193832 
     X31   X32   X33   X34   X35   X36 
0.11082240 -0.26369909 0.37432923 -0.36222913 -0.19496623 0.37251599 
     X37   X38   X39   X40   X41   X42 
-0.27698393 0.26546843 0.13865907 -0.05896102 0.38421875 0.40201066 
     X43   X44   X45   X46   X47   X48 
-0.07955439 -0.23950890 0.20039167 -0.07278757 0.17397793 -0.34845780 
     X49   X50   X51   X52   X53   X54 
-0.13418043 -0.09117669 0.50658960 -0.01355937 -0.19616894 0.67096919 
     X55   X56   X57   X58   X59   X60 
0.07128920 -0.30915734 -0.26373001 -0.20921997 -0.55908983 -0.27541652 
     X61   X62   X63   X64   X65   X66 
0.30810248 0.06467311 -0.15531110 -0.02854304 -0.10019493 -0.23069442 
     X67   X68 
-0.63667406 -0.15019676 

其中在調用apply2意味着我們應用函數到每一列。一點點短是使用sapply(在列迭代缺省):

sapply(a, cor, y = b) # Leads to the exact same result as above 

用,它並不能概括的a任何尺寸的缺點。

甚至冷卻器,使用dplyr

a %>% summarise_each(funs(cor(x = ., y = b))) 
+3

不只是'cor(b,a)'做同樣的事嗎? – Cath

+0

@CathG,那的確是對的,很好。我將添加它作爲一個選項。我會保留其他選項,因爲它們可以解決更一般的問題。 –