我想使用帶有cor的ddply
(package plyr)來計算按因子(「Plot」)分割的Pearson相關性。當列作爲列名傳遞給cor時,我可以成功地做到這一點,但當通過列號傳遞時,我可以成功地做到這一點。使用帶有多個數據幀列的plyr和cor
日期幀:
head(chlor2013.df)
Plot X645 X665 Chlorophyll
1 1 0.019 0.054 0.3647
2 1 0.061 0.170 1.1588
3 1 0.021 0.054 0.3827
4 2 0.033 0.092 0.6270
5 2 0.055 0.148 1.0259
6 2 0.018 0.045 0.3234
使用ddply
和cor
,以及該數據幀的列名:
ddply(chlor2013.df, .(Plot), summarize, cor.v2.v3 = cor(X645,X665, use="complete.obs"))
Plot cor.v2.v3
1 1 0.9610698
2 2 0.9261662
3 3 0.9191197
4 4 0.9104561
5 5 0.9541877
6 6 0.8750801
7 7 0.9949413
請注意,每個行示出了獨特的相關值。以上是我想要的。
使用ddply
和cor
,以及列中的數據幀的數目:
ddply(chlor2013.df, .(Plot), summarize, cor.v2.v3 = cor(chlor2013.df[2:3],
use="complete.obs"))
Plot cor.v2.v3.1 cor.v2.v3.2
1 1 1.0000000 0.9698445
2 1 0.9698445 1.0000000
3 2 1.0000000 0.9698445
4 2 0.9698445 1.0000000
5 3 1.0000000 0.9698445
6 3 0.9698445 1.0000000
7 4 1.0000000 0.9698445
8 4 0.9698445 1.0000000
9 5 1.0000000 0.9698445
10 5 0.9698445 1.0000000
11 6 1.0000000 0.9698445
12 6 0.9698445 1.0000000
13 7 1.0000000 0.9698445
現在,所有r值是相同的,並代表當沒有由因子分裂兩列的相關性。所以列號語法與列名稱語法不同。我錯過了什麼?最終,我想計算所有三個變量的相關矩陣:X645,X665和葉綠素,按Plot分割。
感謝
我明白了,謝謝你幫助我理解! – prefectionist
所以這適用於計算兩列的r,但爲什麼不能超過兩? – prefectionist
@prefectionist,我已經更新了我的答案。 – Henrik